访问控制允许带有和不带有 www 的来源

Posted

技术标签:

【中文标题】访问控制允许带有和不带有 www 的来源【英文标题】:Access Control Allow Origin with and without www 【发布时间】:2021-07-27 13:41:40 【问题描述】:

我构建了一个带有以下标头的 php API:

header("Access-Control-Allow-Origin: https://my-domain.de");

这样,我只能从 https://my-domain.de 访问 api,但不能从 https://www.my-domain.de 访问 api

我明白了:

Origin https://www.my-domain.de is not allowed by Access-Control-Allow-Origin.
[Error] XMLHttpRequest cannot load https://my-domain.de/checkin/api/generateUser.php due to access control checks.

我怎样才能使它同时适用于:www 和没有 www?

【问题讨论】:

为什么您的网站本身可以在两个不同的主机名下使用?通常的方法是修复那个,并将一个版本重定向到另一个。 这能回答你的问题吗? Access-Control-Allow-Origin issue with and without www in url 【参考方案1】:

您可以只添加另一行:

header("Access-Control-Allow-Origin: https://my-domain.de");
header("Access-Control-Allow-Origin: https://www.my-domain.de");

PHP 不支持通配符头,你要么支持所有域:

header("Access-Control-Allow-Origin: *");

或具体如上

【讨论】:

CORS 对我来说是新的,所以我不知道什么是最安全的做法。我的应用对所有人开放,我不希望有人使用我的 api 或在应用之外运行请求。 无论如何你都应该使用 api 密钥,以确保其得到妥善保护

以上是关于访问控制允许带有和不带有 www 的来源的主要内容,如果未能解决你的问题,请参考以下文章

socket.io,“访问控制允许来源”错误

S3:AJAX POST 没有“访问控制允许来源”

如何修复“评估已被 CORS 政策阻止:反应中没有“访问控制允许来源”

jQuery XML REST 访问控制允许来源

Symfony2:允许使用谷歌图表访问控制允许来源

无法从应用引擎访问 Google 云功能(带有入口控制)