显然,我完全误解了它的语义.我想到了这样的事情:
好吧,我错了.它根本不起作用.所以,我已经阅读了跨源资源共享,并尝试在w3c推荐中阅读跨源资源共享
有一件事是肯定的 - 我仍然不明白我应该如何使用这个标题.
我完全控制了站点A和站点B.如何启用从站点A下载的javascript代码以使用此标头访问站点B上的资源?
PS
我不想使用JSONP.
我可以http://catfacts-api.appspot.com/api/facts?number=99通过Postman 点击这个终点并返回JSON
此外,我正在使用create-react-app,并希望避免设置任何服务器配置.
在我的客户端代码中我试图用fetch同样的东西,但我收到错误:
请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许来源' http:// localhost:3000 '访问.如果不透明响应满足您的需求,请将请求的模式设置为"no-cors"以获取禁用CORS的资源.
所以我试图传入一个对象,我的Fetch将禁用CORS,如下所示:
fetch('http://catfacts-api.appspot.com/api/facts?number=99', { mode: 'no-cors'})
.then(blob => blob.json())
.then(data => {
console.table(data);
return data;
})
.catch(e => {
console.log(e);
return e;
});
Run Code Online (Sandbox Code Playgroud)
有趣的是,我得到的错误实际上是这个函数的语法错误.我不确定我的实际fetch是否已损坏,因为当我删除{mode:'no-cors'}对象,并为其提供不同的URL时,它可以正常工作.
我也尝试传入该对象{ mode: 'opaque'},但这会从上面返回原始错误.
我相信我需要做的就是禁用CORS ..我错过了什么?