在Sencha Touch 2中加载商店时,如何停止附加选项http请求?

2022-04-04 00:00:00 ajax sencha-touch sencha-touch-2

我正在用Sencha Touch 2编写一个应用程序,作为其中的一部分,我有许多商店使用AJAX代理和JSON阅读器从我的外部Web服务自动加载。该服务驻留在与客户端不同的域上,因此我必须在服务器上设置Access-Control-Allow-Origin才能使其工作。

在这种设置下一切工作都很顺利,但我使用Fiddler查看请求性能,并且我注意到我的Web服务的每个调用实际上都发出两次。一次作为OPTIONS请求,然后再次作为预期的GET。就我所知,OPTIONS请求没有任何用处--至少在我的设置中是这样--所以我想去掉它,以使加载性能更快。

有人知道这是怎么回事吗?如果我可以在代理上设置一个配置来关闭它,那就太好了,但我还没有在e上找到。

感谢您的关注!


解决方案

我想通了,这一切都与sencha与其AJAX调用一起传递的x-Requested-With头有关。这篇博客文章(http://remysharp.com/2011/04/21/getting-cors-working/)深入到了细节,但简短的版本是,在一个奇怪的功能中,浏览器只在您的请求中包含任何自定义标题时才发送飞行前选项检查。如果您不向请求添加任何标头,并且只将其保留为纯文本,则GET将顺利完成,不会进行选项检查。

我深入研究了源代码,发现sencha确实有一个配置来控制是否发送x请求-只是在正常使用时不太公开。

Ext.Ajax.setUseDefaultXhrHeader(false);

我只是设置了在发出请求之前,它会删除x-REQUESTED-WITH,只有GET会发出。

相关文章