AJAX跨域访问解决方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AJAX跨域访问解决方法相关的知识,希望对你有一定的参考价值。

问题描述: ajax在使用的时候,在本地打开,能够正常访问任意存在的网址,我猜我们都是在广域网(貌似不是这个原因) ; 然后我放在IIS下,用局域网IP进行访问,出现权限不足,我非常纳闷,于是我的外网IP进行访问,也是权限不足 寻求方法: 我查了很多资料,可是网上的资料基本上都是采集来采集去,百分90都是转载的。 都只说了是浏览器拒绝JS跨域访问,没有具体的说明原因和解决办法 高分寻求高手讲解并给个实例,不要去随便百度或谷歌搜一下把答案贴上来,那些我基本看过了,如果非要转载的,就要加上详细的注释 ,分数稍后追加

从你的问题描述中,我无法看出你真正的问题是什么,请问:一、你的IIS配置中是否支持匿名访问?二、你在ajax交互时url用的是相对路径吗?还是交互的不是自己网站的网址? 关于JS跨域访问,如果非要访问其它网站的资源,解决方法有:一、通过iframe连接其它网站二、ajax间接通过后台访问对方网站的资源,如访问对方网站的webservice 参考技术A 这个是IE的安全机制造成的,访问网页的客户端的IE设置需要修改一个地方:Internet选项-->安全-->自定义级别,把“通过域访问数据源”选为[启用]即可,在IE7下还要把访问域名或IP添加进可信任站点列表中。我开发的是B/S管理系统,可以在安装时自动修改客户端的IE设置,但如果是网站,就很难令浏览者去修改这个设置了。 参考技术B IE9、Chrome、FF、Opera支持ResponseHeader Access-Control-Allow-Origin
IE下得额外配置:
jQuery.support.cors = true; (启用读取上面那个头信息的功能)
点击IE浏览器的的“工具->Internet 选项->安全->自定义级别”将“其他”选项中的“通过域访问数据源”选中为“启用”或者“提示”,点击确定就可以了。(自身的过滤)
参考技术C 前端type用jsonp别用json,后端返回也要返回jsonp格式的输出

AJAX跨域解决方法

跨域,简单地理解就是因为浏览器基于安全的同源策略限制不同域名和协议之间的互相访问。

而AJAX的跨域请求,其实浏览器并没有限制不同域的网络请求,只是浏览器会基于请求返回响应头做处理,如果发现是跨域请求且响应头Access-Control-Allow-Origin未对请求来源设置允许,则根据非同源禁止策略,浏览器不会将服务端返回的数据交给AJAX,这样就会阻止不同域之间的数据交互。

 

1)服务端对访问的来源设置Access-Control-Allow-Origin响应头许可;

2)JSONP

jsonp的实现原理,其实就是通过动态加载script标签,预先定义好callback函数处理逻辑,服务端返回的数据其实是一个执行函数的代码,将有效数据作为callback函数的参数。

 

以上是关于AJAX跨域访问解决方法的主要内容,如果未能解决你的问题,请参考以下文章

AJAX 跨域方法

ajax跨域解决方案

AJAX跨域解决方法

Flask解决跨域

ajax实现跨域方法

ajax跨域的处理方法