为什么在XHR调用中不尊重CORS标头?

时间:2019-02-12 12:22:46

标签: jquery cors xmlhttprequest cross-domain

我有这个代码段,可以使用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时,可以看到设置了正确的标题:

访问控制允许来源:*

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

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

1 个答案:

答案 0 :(得分:0)

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