jquery中的ajax的请求出现问题

bm123 发布于 2016/06/25 16:30
阅读 461
收藏 1

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

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

加载中
0
hyjiacan
hyjiacan

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

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

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

才能访问的。




bm123
bm123
我应该怎么写才可以?
0
eechen
eechen
浏览器的同源策略会阻止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来处理这些数据.

bm123
bm123
我用的是火狐最新版,我自己写的一个功能,浏览器上面网址是127.168.0.0我用ajax提交post数据的时候就示提这个,代码我应该怎么写
0
HandMU
HandMU
跨域了
bm123
bm123
是的想解决这个应该怎么写
0
HandMU
HandMU
如果无法操作提交端就进行本地服务端代理提交,这样就不存在跨域问题
0
HandMU
HandMU
如果可以操作提交端,jsonp是个不错的选择。
bm123
bm123
我刚学前端不久,jaonp这些的代码怎么写的
返回顶部
顶部