5
回答
jquery中的ajax的请求出现问题
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

在写ajax的请求的时候出现这个提示,请问是怎么回事

已拦截跨源请求:同源策略禁止读取位于 (某网址) 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。

举报
bm123
发帖于1年前 5回/341阅
共有5个答案 最后回答: 1年前

这是浏览器对跨域访问的限制,也就是你请求的地址与你现在网站的地址不在同一个域名下导致的。你可以去搜一下关键字“跨域”。

这个需要被请求的地址的服务器设置了

Access-Control-Allow-Origin: * 或者 Access-Control-Allow-Origin: 你的域名

才能访问的。




--- 共有 1 条评论 ---
bm123我应该怎么写才可以? 1年前 回复
浏览器的同源策略会阻止AJAX跨域请求.

比如在当前页面,按F12打开Firebug,在控制台执行:
$.get('http://www.oschina.net','',function(data){console.log(data);});
能够正常获取到数据.
但如果执行:
$.get('http://m.oschina.net','',function(data){console.log(data);});
就会提示"已拦截跨源请求".
这是因为 m.oschina.net 这个域跟当前页面的域名 http://www.oschina.net/question/2827973_2185644 不一样,属于跨域,所以被拦截.

如果要让 m.oschina.net 允许 www.oschina.net 这个域AJAX获取其资源,则 m.oschina.net 需要返回 header('Access-Control-Allow-Origin: http://www.oschina.net'); 这个头给浏览器,告诉浏览器允许这个域名AJAX跨域访问我.

不过主要注意的是,低版本浏览器,比如微软的大毒瘤IE6就不支持(不能识别)Access-Control-Allow-Origin这个头,所以这个方法对垃圾IE6无效.这时你就要想其他方法,比如JSONP:
www.oschina.net 通过script标签来正常访问 m.oschina.net 的资源,这种方式是不会被浏览器阻止的.
<script src="http://m.oschina.net/services.php?callback=jsonpCallback"></script>
这个请求会返回 jsonpCallback({"a":1,"b":2,"c":3,"d":4,"e":5}); 这个JS代码,里面的参数就是域m.oschina.net的数据,这个JS代码就会调用当前页面的自定义的函数jsonpCallback来处理这些数据.

--- 共有 1 条评论 ---
bm123我用的是火狐最新版,我自己写的一个功能,浏览器上面网址是127.168.0.0我用ajax提交post数据的时候就示提这个,代码我应该怎么写 1年前 回复
顶部