我试图允许访问我站点上的每个子域,以允许跨子域AJAX调用。有没有一种方法可以指定站点的所有子域(例如*.example.com
),或者当我列出多个域时,为什么以下操作不起作用:
header('Access-Control-Allow-Origin: http://api.example.com http://www.example.com');
我已通读了以下问题,该问题似乎与该问题相似,甚至与我想访问的子域不同,而我要访问子域,而这个问题是指通用域。
Access-Control-Allow-Origin Multiple Origin Domains?
如果上述问题是解决此问题的方法,那么我如何从 header 中检索原点。看来$ _SERVER ['HTTP_ORIGIN']是非常不可靠的,甚至不能跨浏览器。我需要能够在尝试使用javascript发送AJAX调用时在任何浏览器中查看可能显示错误的来源。
最佳答案
解决此问题的方法是使用$_SERVER['HTTP_ORIGIN']
变量来确定请求是否来自允许的域,然后有条件地设置Access-Control-Allow-Origin
,如下所示:
$allowed_domains = [/* Array of allowed domains*/];
if (in_array($_SERVER['HTTP_ORIGIN'], $allowed_domains)) {
header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
}
关于php - 指定具有访问控制源的多个子域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9631155/