手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

access-control-allow-origin-multiple-origin-domains

首页 > PHP >

原文来自:http://stackoverflow.com/questions/1653308/access-control-allow-origin-multiple-origin-domains

主要是因为涉及到CSS和JS文件是挂在别的域,然后又遇到了ajax之类的操作,所以就需要有跨域操作了,本来很方便的,只是在.htaccess文件中加了一句
XML/HTML代码
  1. Header add Access-Control-Allow-Origin "http://xxxxxx.com"  
但因为备案原因,所以又添加了一个备用域名,结果,就报错了,报错提示是:
XML/HTML代码
  1. font from origin 'http://xxxxx.com' has been blocked from loading by Cross-Origin Resource Sharing policy: The 'Access-Control-Allow-Origin' header contains multiple values 'http://yyyy.com, http://zzzz.com', but only one is allowed. Origin 'http://xxxxx.com' is therefore not allowed access.  
我晶,不支持多域名啊,google了一下,找到了这一篇:http://stackoverflow.com/questions/1653308/access-control-allow-origin-multiple-origin-domains
 
不多贴,其实挺有意思。。方法也有不少
1、利用apache的环境变量:
XML/HTML代码
  1. SetEnvIf Origin "^(.*\.example\.com)$" ORIGIN_SUB_DOMAIN=$1  
  2. <FilesMatch "\.woff$">  
  3.     Header set Access-Control-Allow-Origin "%{ORIGIN_SUB_DOMAIN}e" env=ORIGIN_SUB_DOMAIN  
  4. </FilesMatch>  
2、用PHP来判断:
PHP代码
  1. $http_origin = $_SERVER['HTTP_ORIGIN'];  
  2.   
  3. if ($http_origin == "http://www.domain1.com" || $http_origin == "http://www.domain2.com" || $http_origin == "http://www.domain3.info")  
  4. {    
  5.     header("Access-Control-Allow-Origin: $http_origin");  
  6. }  
3、和1有点类似
XML/HTML代码
  1. SetEnvIf Origin "^http(s)?://(.+\.)?(domain\.org|domain2\.com)$" origin_is=$0   
  2. Header always set Access-Control-Allow-Origin %{origin_is}e env=origin_is  
4、这是nginx的:
XML/HTML代码
  1. location /fonts {  
  2.     # this will echo back the origin header  
  3.     if ($http_origin ~ "example.org$") {  
  4.         add_header "Access-Control-Allow-Origin" $http_origin;  
  5.     }  
  6. }  
更多的,还是去原网页看吧。。



本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):