开发者社区> 问答> 正文

jquery中的ajax的请求出现问题

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

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

展开
收起
a123456678 2016-07-14 16:58:18 2399 0
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 的资源,这种方式是不会被浏览器阻止的.

    这个请求会返回 jsonpCallback({"a":1,"b":2,"c":3,"d":4,"e":5}); 这个JS代码,里面的参数就是域m.oschina.net的数据,这个JS代码就会调用当前页面的自定义的函数jsonpCallback来处理这些数据.

    2019-07-17 19:56:36
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
23-Vue.js在前端...1506518547.pdf 立即下载
Javascript中的对象 立即下载
JavaScript函数 立即下载

相关实验场景

更多