[js中ajax跨域支持]js中ajax跨域之cors几个例子分析

更新时间:2019-08-16    来源:php安全    手机版     字体:

【www.bbyears.com--php安全】

由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的内容),ajax跨域请求的两种方案

方案一:jsonp (JSON with Padding)
   
但是jsonp有一个缺点就是不支持get传参

方案二:CORS(跨域资源共享,Cross-Origin Resource Sharing)

此方案支持post提交
    假设我们在http://www.a域名.com域名ajax请求http://www.111cn.net域名下的数据;若使用cors来实现,ajax跨域请求。
    只要在http://www.111cn.net域要在被请求的php脚本头部添加
    header("Access-Control-Allow-Origin:http://www.a域名.com");便可。
    这句的意思是允许http://www.a域名.com跨域访问到http://www.111cn.net域

代码实例:

[http://www.a域名.com域名下的 index.html 文件]

 代码如下




    CORE-AJAX跨域
   
    <script src="http://gongwen.sinaapp.com/Public/Js/jquery-1.7.2.min.js"></script>


    <script type="text/javascript">
        $(function(){
            var url="http://www.111cn.net/server.php";
            $.post(url,{name:"巩文",blog:"www.bestphper.cn"},function(data){
                var info=eval("("+data+")");
                $("body").html("name:"+info.name+"
blog:"+info.blog+"
from:"+info.from);
            });
        });
    </script>

[http://www.111cn.net域名下的 server.php 文件]

 代码如下

    //注此文件在http://www.111cn.net域名下
    //header("Access-Control-Allow-Origin:http://www.a域名.com");
    $arr=array(
        "name"=>$_POST["name"],
        "blog"=>$_POST["blog"],
        "from"=>"http://www.111cn.net"
        );
    echo json_encode($arr);

 

[火狐浏览器访问 http://www.a域名.com ]

那么问题来了,如何用CORS来解决这个ajax跨域问题呢?

只要将http://www.111cn.net域名下的server.php文件中的

//header("Access-Control-Allow-Origin:http://www.a域名.com");

的注释去掉便可。去掉之后再用浏览器进行访问http://www.a域名.com


[其它]


若把php文件的

header("Access-Control-Allow-Origin:*");写成这样,则说明任务一个域都可以去ajax请求此文件

本文来源:http://www.bbyears.com/jiaocheng/62455.html

猜你感兴趣

热门标签

更多>>

本类排行