CORS header #39;Access-Control-Allow-Origin#39; does not match... but it does‼(CORS标头#39;Access-Control-Allow-Origin#39;不匹配.但它确实有‼)
问题描述
我正在用Java编写一个非常简单的JSON API。它实际上是一个为对象坐标提供服务的僵尸项目模型(Project Zomboid Mod)。我的HTTP处理程序如下所示:
public class JSONZomboid implements HttpHandler
{
@Override
public void handle(HttpExchange t) throws IOException {
// HEADERS
Headers headers = t.getResponseHeaders();
headers.set("Content-Type", "text/json");
headers.set("Access-Control-Allow-Origin", "pzmap.crash-override.net");
t.sendResponseHeaders(200,0);
//BODY
OutputStream os = t.getResponseBody();
os.write("{
".getBytes());
// generate JSON here
os.write("}".getBytes());
os.close();
}
}
我想使用userscript将其加载到项目僵尸地图项目中,这意味着我需要启用CORS来连接。这是通过简单的代码完成的:
PlayerRenderer.prototype.fetchInfo = function() {
$.get("http://127.0.0.1:8000/test", {}, this.displayPoints.bind(this));
}
但我收到此错误:
警告:跨域请求被阻止:同源策略不允许读取http://127.0.0.1:8000/test处的远程资源。(原因:CORS标头‘Access-Control-Allow-Origin’与‘pzmap.ash-override.net’不匹配)。
即使在控制台中,我也可以清楚地看到该错误是误导性的:
如果我不是已经讨厌CORS,我现在就开始讨厌它了。您能告诉我Allow Origin标头中的实际字符串是什么吗?
SSL
上面的注释#1是正确的:CORS需要Access-Control-Allow-Origin头部与客户端的原始请求匹配(为了获得端到端的推荐答案体验)。因此,在本例中,请确保在Access-Control-Allow-Origin标头中设置了pzmap.ash-override.net。
两个注意事项:
1-不管您可能在网上看到什么,nginx当前要求将多个条目作为单独的行列出,例如: 添加_Header Access-Control-Allow-Origin"https://developers.google.com"; 添加标题访问-控制-允许-来源"https://imasdk.googleapis.com";2-此外,不管您可能在网上看到什么,使用通配符都是不可以的。并非所有客户端(即浏览器)都允许这样做。
这篇关于CORS标头';Access-Control-Allow-Origin';不匹配.但它确实有‼的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:CORS标头';Access-Control-Allow-Origin';不匹配.但它确实有‼
基础教程推荐
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 动态更新多个选择框 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06