具有访问控制允许来源正则表达式值的 ajax CORS 问题



>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

相关内容

  • 没有找到相关文章