首页 > 解决方案 > 导致 CORS 错误的内容安全策略

问题描述

奇怪的是,如果域具有 . 最后,例如: domain.uk- 工作正常
domain.uk.- 有 CORS 错误
似乎.最终操作系统被视为域的一部分,因此被认为是不同的来源。似乎只是 Chrome 中的问题。可能是 Chrome 错误?

想也许我可以通过设置重定向在我的 .htaccess 中解决这个问题,但是 .htaccess 不能这样做,因为它只能在域之后匹配,并且.被视为域的一部分。

有什么建议么?

标签: .htaccesscontent-security-policyhttp-referer

解决方案


似乎.最终操作系统被视为域的一部分,因此被认为是不同的来源。似乎只是 Chrome 中的问题。可能是 Chrome 错误?

域的一部分。尾随的点表示完全限定的域名。如果您只在 Chrome 中看到不同的行为,那么 Chrome 可能只是更加严格——这不是一个错误。

尝试https://stackoverflow.com./(例如) - 您可能会出现注销(因为 cookie 未通过)。

想也许我可以.htaccess通过设置重定向来解决这个问题,但是 .htaccess 不能这样做,因为它只能在域之后匹配,并且.被视为域的一部分。

你可以在.htaccess. 点作为Host标头的一部分发送(因为它是域的一部分) - 在HTTP_HOST服务器变量中可用。通常,您会将此作为规范(www 与非 www / HTTP 到 HTTPS)重定向的一部分,但您可以使用 mod_rewrite 执行以下操作以删除请求的主机名上的尾随点:

RewriteEngine On

RewriteCond %{HTTP_HOST} (.+)\.$
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]

反向引用包含在前面的条件中捕获的%1主机名,减去尾随点。

更新:

我正在使用 Wordpress,所以它已经在 htaccess 中有一些重写规则,......你能建议如何添加你的重写吗

您需要将此重定向放置现有 WordPress 指令之前(即# BEGIN WordPress部分之前),靠近文件顶部。

您不需要重复该RewriteEngine On指令,因为这已经在 WordPress 部分的后面发生。(如果有多个RewriteEngine指令,则最后一个实例获胜并控制整个文件。)


推荐阅读