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