跨域问题解决方法

本文通过设置 Access-Control-Allow-Origin 来实现跨域。
例如:客户端的域名是 client.com,而请求的域名是 server.com。
如果直接使用 ajax 访问,会有以下错误:

XMLHttpRequest cannot load http://server.com/server.php. 
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://client.com' is therefore not allowed access.

允许单个域名访问

指定某域名( http://client.com )跨域访问,则只需在 http://server.com/server.php 文件头部添加如下代码:

1<?php
2
3header('Access-Control-Allow-Origin: http://client.com');

允许多个域名访问

指定多个域名( http://client1.com, http://client2.com 等 )跨域访问,则只需在 http://server.com/server.php 文件头部添加如下代码:

 1<?php
 2
 3$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : '';  
 4  
 5$allow_origin = array(  
 6    'http://client1.com',  
 7    'http://client2.com'  
 8);  
 9  
10if(in_array($origin, $allow_origin)){  
11    header('Access-Control-Allow-Origin: '.$origin);       
12} 

允许所有域名访问

允许所有域名访问则只需在 http://server.com/server.php 文件头部添加如下代码:

1<?php
2
3header('Access-Control-Allow-Origin: *'); 

参考 & 扩展阅读