2011-11-22 87 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