为什么CORS标头不被视为XHR呼叫的一部分?

问题描述 投票:0回答:1

我有这个片段,我可以在任何站点上使用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时,我可以看到设置了正确的标题:

Access-Control-Allow-Origin:*

在使用开发人员工具进行检查时,它就在那里。但是,从页面运行该代码段时,“网络”选项卡会将其状态列为“已取消”,而对于标题,我只会看到“显示临时标题”,而实际标题则没有。

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

jquery cors xmlhttprequest cross-domain
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.