例如:客户端的域名是www.manongjc.com,而请求的域名是www.server.com

如果直接使用ajax访问,会有以下错误

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

 

在被请求的Response header中加入

// 指定允许其他域名访问  
header(\'Access-Control-Allow-Origin:*\');  
// 响应类型  
header(\'Access-Control-Allow-Methods:POST\');  
// 响应头设置  
header(\'Access-Control-Allow-Headers:x-requested-with,content-type\'); 

就可以实现ajax POST跨域访问了。

 

代码如下:

client.html

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">  
<html>  
 <head>  
  <  http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">  
  < > 跨域测试 </ >  
  <  src=\"//code.jquery.com/jquery-1.11.3.min.js\"></ >  
 </head>  
  
 <body>  
    <div id=\"show\"></div>  
    <  type=\"text/ \">  
    $.post(\"http://www.server.com/server.php\",{name:\"fdipzone\",gender:\"male\"})  
      .done(function(data){  
        document.getElementById(\"show\").innerHTML = data.name + \' \' + data.gender;  
      });  
    </ >  
 </body>  
</html>  

server.php

<?php  
$ret = array(  
    \'name\' => isset($_POST[\'name\'])? $_POST[\'name\'] : \'\',  
    \'gender\' => isset($_POST[\'gender\'])? $_POST[\'gender\'] : \'\'  
);  
  
header(\'content-type:application:json;charset=utf8\');  
header(\'Access-Control-Allow-Origin:*\');  
header(\'Access-Control-Allow-Methods:POST\');  
header(\'Access-Control-Allow-Headers:x-requested-with,content-type\');  
  
echo json_encode($ret);  
?>  

 

Access-Control-Allow-Origin:* 表示允许任何域名跨域访问

 

如果需要指定某域名才允许跨域访问,只需把Access-Control-Allow-Origin:*改为Access-Control-Allow-Origin:允许的域名

例如:header('Access-Control-Allow-Origin:http://www.manongjc.com');

收藏 打印