2011-11-22 24 views
7

Tôi đang cố gắng truy cập vào một trang web địa phương được thiết kế với khung công tác Symfony. Nó hoạt động hoàn hảo với trình duyệt web và với CURL nhưng khi tôi sử dụng Mechanize tôi luôn có 401 câu trả lời trái phép cho máy chủ.Symfony và mechanize

import mechanize 


# Browser 
br = mechanize.Browser() 
br.set_debug_http(True) 
br.set_debug_redirects(True) 
br.set_debug_responses(True) 

# Does not change anything even if we change thos 
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 

# Here is my website 
r = br.open('http://localhost:8080/frontend_dev.php/home') 
html = r.read() 

# Show the html source 
print html 

Bạn có biết tại sao nó hoạt động như thế này không?

Cảm ơn

+0

Symfony có bị nhấn hay không? Điều gì xảy ra, bạn viết chết ("hit"); trên đầu tệp frontend_dev.php? – greg0ire

+0

Nếu tôi chết ("hit"); Tôi thấy lỗi hit và không có lỗi 401. – lc2817

Trả lời

6

Cuối cùng tôi đã tự tìm được câu trả lời. Có lỗi trong sfDoctrineGuardPlugin (và sfGuardPlugin) gây ra hành vi này như đã nêu here. Tôi đã áp dụng bản vá và vấn đề được giải quyết.

+0

Đó là một lỗi cũ, tôi nghĩ bạn phải có một phiên bản cũ của plugin. Xem xét cập nhật. – greg0ire

+0

Lỗi này đã được sửa chữa trong tháng 8 năm nay. Và bản phát hành cuối cùng của sfDoctrineGuard đã được hoàn thành vào năm 2010. Tôi không nghĩ rằng bạn đúng. Những gì bạn đề nghị: http://www.symfony-project.org/plugins/sfDoctrineGuardPlugin – lc2817

+0

Tôi đề nghị sử dụng Symfony2 Nghiêm túc, tôi không biết tại sao bản phát hành cuối cùng quá cũ ... có lẽ jwage quá bận với doctrine2/sf2 ... – greg0ire

1

có các kiểm soát chặt chẽ về những người có thể truy cập môi trường phát triển trong symfony. Hãy thử sử dụng URL chính (có thể là http://localhost:8080/index.php/home)

+0

Nó không giải quyết được vấn đề. Tôi vừa thử nó và gặp lỗi tương tự – lc2817

+0

Xin lỗi. Tôi giả sử bạn xóa bộ nhớ cache của bạn? Bạn có bất kỳ thông tin đăng nhập hoặc bất cứ điều gì yêu cầu? – MrGlass

+0

Đối với bộ nhớ cache: có. Tôi không có bất kỳ chứng nhận nào cần thiết cho trang chủ, cho một số trang sau đó có. Và nó hoạt động hoàn hảo với curl, tôi không biết tại sao ... – lc2817

1

Bạn có thể giới thiệu một số địa chỉ hợp lệ để thử mã của mình không? Tôi đoán rằng bạn đã bỏ lỡ một số cài đặt, hãy thử tắt rô bốt.

br.set_handle_robots(False) 
+0

Tôi đã thử điều này và nó không thay đổi bất cứ điều gì. Không, tôi không thể cung cấp địa chỉ hợp lệ để thử mã của tôi ngay (xin lỗi có thể sau này). – lc2817

1

Tôi không biết gì về khung công tác Symfony, nhưng khi bạn đang nhận được 'Error : 401 '. Thêm những dòng này có thể hoạt động.

br.add_password('http://localhost:8080/frontend_dev.php/home', 'username', 'password') 
br.open('http://localhost:8080/frontend_dev.php/home') 
+0

Tôi đã thử điều này và vẫn nhận được cùng một lỗi – lc2817

Các vấn đề liên quan