PHP header:Access-Control-Allow-Origin响应头解决跨域请求

Micah2016年06月27日 10:45 分类 : PHP  > PHP应用
阅读: 3969

分享到微信朋友圈

传统的跨域请求没有好的解决方案,无非就是jsonp和iframe,PHP header:Access-Control-Allow-Origin响应头解决跨域请求

传统的跨域请求没有好的解决方案,无非就是jsonp和iframe,随着跨域请求的应用越来越多,W3C提供了跨域请求的标准方案(Cross-Origin Resource Sharing)。IE8、Firefox 3.5 及其以后的版本、Chrome浏览器、Safari 4 等已经实现了 Cross-Origin Resource Sharing 规范,实现了跨域请求。


在服务器响应客户端的时候,带上Access-Control-Allow-Origin头信息。

  • 如果设置 Access-Control-Allow-Origin:*,则允许所有域名的脚本访问该资源。
  • Access-Control-Allow-Origin:http://www.phpddt.com.com,允许特定的域名访问。

如PHP添加响应头信息:


header(" Access-Control-Allow-Origin:[URL]");     //设置跨域请求 [*]:表示任何域请求,[http://www.ittidy.com]:特定域名访问。

jsonp:

    <script type="text/javascript" src="http://www.youxiaju.com/js/jquery-1.4.2.min.js"></script>  
    <script type="text/javascript">  
    $(function(){  
    $.ajax(  
        {  
            type:'get',  
            url : 'http://www.youxiaju.com/validate.php?loginuser=lee&loginpass=123456',  
            dataType : 'jsonp',  
            jsonp:"jsoncallback",  
            success  : function(data) {  
                alert("用户名:"+ data.user +" 密码:"+ data.pass);  
            },  
            error : function() {  
                alert('fail');  
            }  
        }  
    );  
    })  
    </script>  

服务端:

    <?php  
    header('Content-Type:text/html;Charset=utf-8');  
    $arr = array(  
        "user" => $_GET['loginuser'],  
        "pass" => $_GET['loginpass'],  
        "name" => 'response'  
      
    );  
    echo $_GET['jsoncallback'] . "(".json_encode($arr).")";  

Micah
IT技术整理

精彩评论:0

还可以输入250个字 评论

评论成功

评论失败

 

微信公众号

微博