[英]Avoid CORS preflight OPTIONS for better performance
使用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方法?
也许charset
param的存在导致了预检? 根据规范,浏览器需要忽略任何参数,并且只考虑MIME类型 ,但可能它们不符合要求。
CORS安全的请求标头是一个名称为其中一个的标头
Accept
Accept-Language
Content-Language
Content-Type
及其值,一旦解析,就具有MIME类型(忽略参数),即application/x-www-form-urlencoded
,multipart/form-data
或text/plain
但是,我没有看到你的请求会引发预检。 也许我错过了一些东西......
确定基于上面评论中提供的信息 ,该网站的来源似乎包含一个包含此内容的script
元素:
window["_tsbp_"] = { ba : "X-TS-BP-Action", bh : "X-TS-AJAX-Request"};
...而且我没有逐步完成代码的其余部分以查看它有什么影响,但它似乎导致X-TS-AJAX-Request
标头被添加到XHR请求中,从而触发预检。
我想这里的一般要点是:每当你发现一个请求触发浏览器进行预检但你不知道原因时,故障排除步骤编号应该是使用你的浏览器devtools来找出你的代码的确切请求标头导致被发送出去。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.