我在 Firefox 上找到了 SuperAgent (http://visionmedia.github.com/superagent/) 问题的根源。不确定 SuperAgent 是否在其 AJAX 调用中执行此操作,或者 FireFox 是否正在触发它。
本质上,每次我进行 AJAX 调用时,都会在实际 AJAX 调用之前在 URL 上触发一个 OPTIONS 方法。很烦人,因为服务器目前不支持 OPTIONS。我怎样才能拨打电话,而不会使服务器变得废话和重新编码?
谢谢
我在 Firefox 上找到了 SuperAgent (http://visionmedia.github.com/superagent/) 问题的根源。不确定 SuperAgent 是否在其 AJAX 调用中执行此操作,或者 FireFox 是否正在触发它。
本质上,每次我进行 AJAX 调用时,都会在实际 AJAX 调用之前在 URL 上触发一个 OPTIONS 方法。很烦人,因为服务器目前不支持 OPTIONS。我怎样才能拨打电话,而不会使服务器变得废话和重新编码?
谢谢
好的,发现了更多细节。值得庆幸的是,在 Safari 上进行的测试让我对实际发生的事情有了更深入的了解,我在这里应用了我的知识。
这似乎是浏览器OPTIONS
在进行实际 AJAX 调用之前调用方法的标准。显得有些霸道。
所以为了解决这个问题,我只是在我的反向代理服务器中添加了一个包罗万象的功能来处理每个OPTIONS
调用。您可以查看以下代码的问题:
玩!2.0 轻松修复路由器包罗万象的 OPTIONS 响应?
如果您想了解更多有关浏览器为何这样做的信息,请参阅此处:
为什么我收到的是 OPTIONS 请求而不是 GET 请求?
OPTIONS
来自CORS标准。
在 phantomjs 中禁用 web-secuty 也有助于解决这个问题(--web-security=no)。因为我无权访问 API 服务器来更改 OPTION 方法。