我试图允许访问我站点上的每个子域,以允许跨子域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/

10-14 08:08