首页 > 其他 > 详细

跨域请求

时间:2014-09-26 17:47:09      阅读:381      评论:0      收藏:0      [点我收藏+]
XMLHttpRequest cannot loadhttp://localhost/MongoTest/person.php. Origin http://localhost:81 is not allowed by Access-Control-Allow-Origin.

 同源策略导致的跨域请求被拒绝

解决方法:

1.利用<script>标签

 浏览器会阻止ajax请求非同源的内容,但没有限制<script>标签来访问非同源的内容,也没有限制使用动态添加<script>标签,所以可以采用这种方式打破这种限制。

<script type="text/javascript" src="http://localhost:80/MongoTest/person.php" ></script>

动态添加:即创建一个script标签,并且为src赋值,然后通过DOM操作添加到HTML文档中

2.JSONP

JSONP(JSON with Padding)就是服务器端和客户端互相协作以完成跨域请求的一种协议,客户端向服务器端发送请求并附带callback函数,服务器端返回相应的js代码,这个代码就是执行回调函数,参数就是服务器端返回的JSON数据。
客户端在发起跨域请求时,需要制定具体的回调函数,比如这个请求http://localhost:80/MongoTest/person.php?callback=sayHello,callback就是回调函数,服务器端也要通过callback要提取回调函数名,所以具体的这个参数需要客户端和服务器端达成一致,否则不能实现跨域。
用jquery实现jsonp
$.ajax({
    type : "get",
    async:false,
    url : "http://www.xxx.com/ajax.do",
    dataType : "jsonp",
    jsonp: "callbackparam",//服务端用于接收callback调用的function名的参数
    jsonpCallback:"success_jsonpCallback",//callback的function名称
    success : function(json){
        alert(json);
        alert(json[0].name);
    },
    error:function(){
        alert(‘fail‘);
    }
});
public void ProcessRequest (HttpContext context) {
    context.Response.ContentType = "text/plain";
    String callbackFunName = context.Request["callbackparam"];
    context.Response.Write(callbackFunName + "([ { name:\"John\"}])");
}

 

 

跨域请求

原文:http://www.cnblogs.com/jellybaobao/p/3994765.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!