微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript-避免执行CORS预检选项以获得更好的性能

使用CDN提供程序,并像这样从CDN调用静态HTML文件.

          $.ajax({
            url : CDNPATH,
            type : "GET",
            contentType : "text/plain; charset=utf-8",
            async : async,
            cache : true,
            processData : false,
            success : function(response, status, xhr) {
                onSuccess(response, status, xhr);
                $(document).trigger('contentReady');
            }
        });

在应用程序的主页上,我有5个静态HTML文件,该文件会触发5个OPTION调用.可以想象,它会损害性能.我曾在类似的问题上看到,使用GET方法和text / plain可以避免这种情况,如上所述,但是这种方法不起作用.

如何避免使用这些印​​前检查OPTIONS方法

解决方法:

字符集参数的存在可能会导致预检?根据规格,浏览器为required to ignore any params and only consider the MIME type,但可能不符合要求.

A CORS-safelisted request-header is a header whose name is one of

  • Accept
  • Accept-Language
  • Content-Language
  • Content-Type and whose value, once parsed, has a MIME type (ignoring parameters) that is application/x-www-form-urlencoded, multipart/form-data, or text/plain

另外,我看不到您的请求会触发预检.也许我想念一些东西…

更新2017-02-20

根据information provided in a comment above确定,该站点的源似乎包含具有以下内容的脚本元素:

window["_tsbp_"] = { ba : "X-TS-BP-Action", bh : "X-TS-AJAX-Request"};

…并且我没有逐步完成其余代码,以了解产生了什么效果,但是似乎正在导致X-TS-AJAX-Request标头添加到XHR请求中,从而触发了预检.

我想这里的总的收获是:每当您发现请求触发浏览器进行预检但您不知道为什么时,排除故障的步骤号可能应该是使用浏览器devtools来确切找出代码的请求标头导致被发送出去.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐