为什么我的Access Control Allow Origin标头的值不正确



我在域上有一个网页https://imeet.pgi.com向另一个域发出XMLHttpRequest。请求失败,出现以下控制台错误(使用Chrome浏览器):

XMLHttpRequest无法加载https://pgidrive.com/eloqua/forminator/getForm.php.这个"Access Control Allow Origin"标头具有值'https://imeet.pgi.coms',该值不等于提供的原点。原点'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 %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header set Access-Control-Allow-Credentials true
</IfModule>

在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发出请求时,模式将被解析并分组如下:

$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

相关内容

  • 没有找到相关文章

最新更新