为啥 CORS 标头不被视为 XHR 调用的一部分?

Posted

技术标签:

【中文标题】为啥 CORS 标头不被视为 XHR 调用的一部分?【英文标题】:Why is CORS header not respected as part of an XHR call?为什么 CORS 标头不被视为 XHR 调用的一部分? 【发布时间】:2019-07-06 02:20:32 【问题描述】:

我有这个 sn-p,我可以使用 jQuery 在任何站点的控制台上运行它,并且在我看到它的标头之前,请求就被取消了。

jQuery.ajax(
    url:"https://example.com/api",
    cache:false,
    global:false,
    crossDomain:true,
    data: 
        'whatever': 1234
    ,
    xhrFields: 
        withCredentials: true
    ,
    dataType:"json"
);

在控制台中可以看到通常的“被 CORS 策略阻止:请求的资源上不存在 'Access-Control-Allow-Origin' 标头”。但是当我在新选项卡中自行加载我的 API URL 时,我可以看到设置了正确的标题:

访问控制允许来源:*

使用开发人员工具进行检查时会出现。但是,当从页面运行该 sn-p 时,“网络”选项卡将其状态列为“已取消”,对于标题,我只看到“显示临时标题”,而真正的标题则没有。

API 服务器是基于 WordPress 的,我相信我正确设置了标题。从here 尝试了这两种方法。

【问题讨论】:

【参考方案1】:

哦,我不得不放弃withCredentials,因为它不允许通配符来源。此外,API URL 缺少尾部斜杠。当向 WP 发出请求时,它 301 会重定向到带有斜杠的 URL。但是,第一页(请求到达的地方)没有标题。

【讨论】:

以上是关于为啥 CORS 标头不被视为 XHR 调用的一部分?的主要内容,如果未能解决你的问题,请参考以下文章

CORS XHR 重定向不起作用

CORS 和 Origin 标头?

为啥禁止没有凭据的 CORS?

XHR2 允许来源 - 这可以伪造吗?

API Gateway v2 未从 OPTIONS 调用返回 CORS 标头

为啥解决背包问题不被视为线性规划?