>Hy,
当我向另一个域请求 ajax 时,我遇到了此错误:
XMLHttpRequest cannot load http://rec.something.fr/services/data.
The 'Access-Control-Allow-Origin' header contains the invalid value '*.something.fr'.
Origin 'http://local.something.fr' is therefore not allowed access
我不明白"访问控制-允许-原产地"标头是否可以使用正则表达式。一些消息来源说可以,另一些消息来源说不能。
最大的问题是,负责 http://rec.something.fr 的是另一个社会。在我打电话给他们之前,我想确保问题出在他们的服务器上,而不是我的代码中缺少的东西。
我的代码:(原产地 = http://local.something.fr(
$.ajax({
url: "http://rec.something.fr/services/data",
crossDomain: true,
dataType: "json" })
被调用服务的内容是 Json:
[{data:myData}]
如果我使用 CORS 铬插件谁捕获响应并替换访问控制允许源:*.something.fr由访问控制允许原点:*,它将起作用。
我无法使用 JSONP,因为这需要更新 rec.something.fr 服务器
知道吗?
Access-Control-Allow-Origin
值不能是正则表达式或任何其他类型的模式。它们必须与请求Origin
标头完全匹配,或者null
,或者是单个文字*
。
另请参阅对问题访问控制允许来源通配符子域、端口和协议的接受答案,以及问题"将正则表达式与 CORS 结合使用"的第一条评论。
因此,您无法解决此问题。http://rec.something.fr
维护者只需要修复他们发送的损坏的Access-Control-Allow-Origin
标头。
我不明白"访问控制允许来源"标头是否可以使用 或者不是正则表达式。一些消息来源说可以,另一些消息来源说 不能。
绝对不能。Access-Control-Allow-Origin
有效语法的当前权威来源是 Fetch 规范的"HTTP 新标头语法"部分中的 ABNF 生产:
Access-Control-Allow-Origin = origin-or-null / "*"
有关良好的辅助源,请参阅 HTML5 Rocks 上的 Using CORS 文章的"处理简单请求"部分,其中是这样说明的:
标头的值可以回显源请求标头,也可以是允许来自任何源的请求的
'*'
。
因此,如果你想尝试帮助http://rec.something.fr
维护者纠正他们的服务器配置,你可以建议他们应该改变服务器逻辑中的代码来执行以下操作:
- 对于来自与
*.something.fr
匹配的源的请求,使用与请求Origin
标头的值完全相同的值发回Access-Control-Allow-Origin
- 否则,对于来自
*.something.fr
不匹配的源的请求,则根本不发送回Access-Control-Allow-Origin