2011-11-22 116 views
7

我正在嘗試訪問使用Symfony框架設計的本地網站。 它與網絡瀏覽器和CURL完美結合,但是當我使用機械化時,我總是得到401服務器未經授權的答案。Symfony和機械化

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 

你知道爲什麼它的行爲如此嗎?

謝謝

+0

Symfony命中與否?它會發生什麼,你寫死(「命中」);在frontend_dev.php文件的頂部? – greg0ire

+0

如果我死了(「命中」);我看到了命中和沒有401錯誤。 – lc2817

回答

6

我終於自己找到了答案。 sfDoctrineGuardPlugin(和sfGuardPlugin)中存在導致此行爲的錯誤,如here所述。 我應用了這個補丁,問題就解決了。

+0

這是一箇舊的錯誤,我認爲你必須有一個老版本的插件。考慮更新。 – greg0ire

+0

該錯誤已在今年8月份得到糾正。 sfDoctrineGuard的最後一個版本已經完成了2010年。我認爲你沒有錯。你有什麼建議:http://www.symfony-project.org/plugins/sfDoctrineGuardPlugin – lc2817

+0

我建議使用Symfony2說真的,我不知道爲什麼最後的版本是如此之久...也許jwage是太忙了與doctrine2/sf2 ... – greg0ire

1

有誰可以在symfony中訪問開發環境的嚴格控制。嘗試使用主要URL(可能是http://localhost:8080/index.php/home

+0

它沒有解決問題。我只是試了一下,得到了同樣的錯誤 – lc2817

+0

對不起。我假設你清除了緩存?你有任何證書或任何要求? – MrGlass

+0

對於緩存:是的。我沒有任何主頁所需的憑據,對於某些頁面之後的是。並且它與捲曲完美配合,我不知道爲什麼... – lc2817

1

你可以引用一些有效的地址來嘗試你的代碼? 我猜你你錯過了一些設置,嘗試禁用機器人。

br.set_handle_robots(False) 
+0

我試過了,它沒有改變任何東西。 不,我不能提供一個有效的地址來嘗試我的代碼沒有(對不起,也許以後)。 – lc2817

1

我對Symfony框架一無所知,但正如您所得到的那樣'Error : 401 '。添加這些行可能工作。

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

我試過了,仍然得到相同的錯誤 – lc2817