为啥我的 Access-Control-Allow-Origin 标头的值不正确?
Posted
技术标签:
【中文标题】为啥我的 Access-Control-Allow-Origin 标头的值不正确?【英文标题】:Why does my Access-Control-Allow-Origin header have an incorrect value?为什么我的 Access-Control-Allow-Origin 标头的值不正确? 【发布时间】:2017-07-03 00:37:07 【问题描述】:我在域 https://imeet.pgi.com 上有一个网页,向另一个域发出 XMLHttpRequest。请求失败并出现以下控制台错误(使用 Chrome 浏览器):
XMLHttpRequest 无法加载 https://pgidrive.com/eloqua/forminator/getForm.php。这 “Access-Control-Allow-Origin”标头有一个值 'https://imeet.pgi.coms' 不等于提供的原点。 Origin 'https://imeet.pgi.com' 因此不允许访问。
请注意,Access-Control-Allow Origin 标头的值为: https://imeet.pgi.coms 以“s”结尾。
为什么我的Access-Control-Allow-Origin
标头有这个不正确的值?
如果可能是某个地方的拼写错误,我会去哪里检查?
更多背景信息:我已经成功地从其他域发出了同样的请求,没有任何问题。我在 pgidrive.com 上的 .htaccess 文件中设置了一个允许的源域列表,其中包括 imeet.pgi.com。
另外,我的 .htaccess 中允许的源域的代码:
<IfModule mod_headers.c>
SetEnvIf Origin "http(s)?://(www\.)?(agenday.com|imeet.pgi.com|pgi.com|go.pgi.com|staging.pgi.com|imeetlive.pgi.com|globalmeet.pgi.com|latam.pgi.com|br.pgi.com|pgi.ca)$" AccessControlAllowOrigin=$0$1
Header add Access-Control-Allow-Origin %AccessControlAllowOrigine env=AccessControlAllowOrigin
Header set Access-Control-Allow-Credentials true
</IfModule>
【问题讨论】:
然后检查那个 htaccess 文件 @hjpotter92 - 我检查了 htaccess,但没有发现问题。我刚刚将我的 htaccess 代码添加到我的帖子中。非常感谢您的关注。 【参考方案1】:在您的 htaccess 文件中,执行以下操作时:
SetEnvIf Origin "http(s)?://(www\.)?(agenday.com|imeet.pgi.com|pgi.com|go.pgi.com|staging.pgi.com|imeetlive.pgi.com|globalmeet.pgi.com|latam.pgi.com|br.pgi.com|pgi.ca)$" AccessControlAllowOrigin=$0$1
你有AccessControlAllowOrigin=$0$1
。这里,$0
表示整个匹配的字符串,$1
表示第一个匹配的组。这里的第一个匹配组是(s)?
。
当您使用来源发出请求时:https://imeet.pgi.com
,模式被解析并分组as follows:
$0 = `https://imeet.pgi.com` $1 = `s` $3 = `imeet.pgi.com`
这就是您看到s
字符的原因。
将其更改为(基本上,删除$1
):
SetEnvIf Origin "https?://(?:(?:agenday|(?:(?:imeet|go|staging|imeetlive|globalmeet|latam|br)\.)?pgi)\.com|pgi\.ca)$" AccessControlAllowOrigin=$0
【讨论】:
老兄。你是男人。太感谢了!我是正则表达式和模式的新手 - 我知道我还有很多东西要学!以上是关于为啥我的 Access-Control-Allow-Origin 标头的值不正确?的主要内容,如果未能解决你的问题,请参考以下文章
ABP PUTDELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词) 引发客户端错误 No 'Access-Control-Allow