Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 如何将apache配置为使用Access Control Allow Origin标头处理多个域?_Ajax_Apache - Fatal编程技术网

Ajax 如何将apache配置为使用Access Control Allow Origin标头处理多个域?

Ajax 如何将apache配置为使用Access Control Allow Origin标头处理多个域?,ajax,apache,Ajax,Apache,我想将apache配置为允许来自多个域(而不是所有域)的XMLHttpRequests 这项工作: Header set Access-Control-Allow-Origin "*" 但这是不安全的,我想允许我指定的域,所以在谷歌搜索了一段时间后,我发现: Header set Access-Control-Allow-Origin "http://domain1.com http://domain2.com" 但这只拾取第一个域,第二个域是不允许的。如何正确指定多个域?您可以在.htac

我想将apache配置为允许来自多个域(而不是所有域)的XMLHttpRequests

这项工作:

Header set Access-Control-Allow-Origin "*"
但这是不安全的,我想允许我指定的域,所以在谷歌搜索了一段时间后,我发现:

Header set Access-Control-Allow-Origin "http://domain1.com http://domain2.com"

但这只拾取第一个域,第二个域是不允许的。如何正确指定多个域?

您可以在.htaccess文件或vhost文件(在“目录”组中)中使用setenif:


SetEnvifLocase来源“https?:/(www\)?(mydomain\.com | mydomain2\.com)(:\d+?$”AccessControlAllowOrigin=$0
标头集访问控制允许来源%{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
使用此代码,您可以允许从

  • “mydomain.com”和“mydomain2.com”
  • 前面有或没有“www.”
  • 有或没有端口号
  • http或https

你可以添加多个用|分隔的域,或者你可以使用regexp配置不同的子域或模式。

很好,除了我只在我放置
标题集而不是
标题添加时才起作用。
。如果我错了,请纠正我,但我认为你需要从第二行删除$1。有了它,通过https的任何请求都会失败,因为$1会捕获https中的“s”,并将其附加到允许的url的末尾(因此您最终得到的是.coms)。我到处都能看到这些SetEnvIf解决方案,但没有人解释它们是如何工作的。是的,谢谢。在my/sites available/mysite.conf:dconfied中工作得非常好。请注意,对于具有端口的localhost,请按如下方式删除端口号:setEnvifLocase Origin“https?”:/(www\)?(localhost |添加一些关于此答案如何帮助解决当前问题的解释这不起作用,因为
Access Control Allow Origin
标头只允许一个值。因此,虽然这是为允许多个输入的标头定义多个值的有效方法,但不属于此类情况。
Header always append Access-Control-Allow-Origin: "http://domain1.com"
Header always append Access-Control-Allow-Origin: "http://domain2.com"
Header always append Access-Control-Allow-Origin: "http://domain1.com"
Header always append Access-Control-Allow-Origin: "http://domain2.com"