DOJO AJAX请求选项

时间:2010-11-05 15:50:34

标签: javascript python ajax dojo

我通过CherryPy(Python Web框架)公开了一个简单的RESTful JSON url。我有第二个应用程序(使用Pylons)需要访问CherryPy公开的URL。两者都通过localhost提供。直接使用浏览器时,两个URL都可以正常解析。

但是,当从最初的Pylons请求运行的DOJO脚本从CherryPy调用JSON url时,它会失败。我在Firefox中打开LiveHeaders并发现DOJO首先发送HTTP“OPTIONS”请求。 CherryPy拒绝使用405,方法不允许的OPTIONS请求,并且一切都停止。

如果我将同一页放到CherryPy应用程序中,一切都很好。

在我的localhost开发平台上解决此问题的最佳方法是什么? ......这会发生在Prod吗?

2 个答案:

答案 0 :(得分:2)

在另一个网站上,我发现您需要覆盖xhrArgs的标头以防止出现此问题。我引用那个论坛:

  

默认情况下,dojo会向Access-Control-Request-Header属性添加“X-Requested-With”参数,这通常会导致服务器拒绝请求,因为它会导致跨站点XHR请求强制执行预检请求。

原始解决方案is here

答案 1 :(得分:1)

我的猜测是你通过2个不同的端口本地服务这两个应用程序,这使得dojo尝试执行跨域XHR调用。

您需要能够从同一URL(协议,主机名和端口)提供JSON URL才能成功进行XHR调用。我通过在本地使用nginx并将其配置为通过将它们转发到CouchDB来提供来自我的Dojo应用程序的数据库请求来实现此目的。