ie8跨域访问
A. 如何程序中设置IE8的通过域访问数据源
不同域
可以用 img script iframe src 来跨越请求
IE8改为jsonp数据,ie下跨域请求用XDomainRequest对象,不是acx或者XMLHttpRequest对象
可以看这个代码
https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
B. 说明跨域产生的原因是什么
跨域请求存在的原因:由于浏览器的同源策略,即属于不同域的页面之间不能相互访问各自的页面内容。
跨域的方式
1.前端的方式: possMessage,window.name,document.domain,image.src(得不到数据返回),jsonP(script.src后台不配合得不到数据返回),style.href(得不到数据返回)
一.imge.src,script.src,style.href 不受同源策略的影响可以加载其他域的资源,可以用这个特性,向服务器发送数据。最常用的就是使用image.src 向服务器发送前端的错误信息。image.src 和style.href 是无法获取服务器的数据返回的,script.src 服务器端配合可以得到数据返回。
二possMessage,window.name,document.domain 是两个窗口直接相互传递数据。
(1)possMessage 是HTML5中新增的,使用限制是 必须获得窗口的window 引用。IE8+支持,firefox,chrome,safair,opera支持
(2)window.name ,在一个页面中打开另一个页面时,window.name 是共享的,所以可以通过window.name 来传递数据,window.name的限制大小是2M,这个所有浏览器都支持,且没有什么限制。
3) document.domain 将两个页面的document.domain 设置成相同,document.domain 只能设置成父级域名,既可以访问,使用限制:这顶级域名必须相同
2.纯后端方式: CORS,服务器代理
CORS 是w3c标准的方式,通过在web服务器端设置:响应头Access-Cntrol-Alow-Origin 来指定哪些域可以访问本域的数据,ie8&9(XDomainRequest),10+,chrom4 ,firefox3.5,safair4,opera12支持这种方式。
服务器代理,同源策略只存在浏览器端,通过服务器转发请求可以达到跨域请求的目的,劣势:增加服务器的负担,且访问速度慢。
3.前后端结合:JsonP
script.src 不受同源策略的限制,所以可以动态的创建script标签,将要请求数据的域写在src 中参数中附带回调的方法,服务器端返回回调函数的字符串,并带参数。
C. XDomainRequest,IE8+跨域请求对象
XDomainRequest对象为一个允许脚本连接任何服务器并且交互数据的安全,可信,轻量级数据服务。开发使用 XDomainRequest 对象发送有跨域安全当前ajax请求。安全警告: 跨域请求(XDRs)匿名保护用户数据,就是说服务器不能确定谁在请求数据。为了保护用户隐私,跨域返回的数据不能为敏感或者个人身份识别之类的信息。为了防止泄露数据给恶意的站点,不鼓励启用XDRs请求。
D. 如何解决IE浏览器跨域问题
工具:
IE浏览器
方法如下:
1、打开IE浏览器,在工具菜单下选择Internet选项,打开Internet选项卡
2、切换到安全选项卡下,点击可信站点,然后单击站点按钮
3、可信站点窗口输入网址到可信站点的区域,点击添加按钮,网址则会添加到网站列表下,最后关闭可信站点窗口
4、还是在安全选项卡下的可信站点,点击自定义级别
5、打开站点区域窗口,找到跨域浏览窗口和框架选择启用
6、在当前窗口中继续往下翻,通过域访问数据源也选择启用,点击确定关闭受信任的站点区域窗口
7、在Internet窗口也点击确定按钮,同时关闭浏览器
8、在请求的js脚本中添加是否允许跨域访问的权限,jQuery.support.cors默认值为true,则代表允许;反之,不允许。设置完成,重新打开浏览器验证即可。
E. 如何解决ie8 下的跨域post请求
方法/步骤
1
打开IE浏览器,在工具菜单下选择Internet选项,打开Internet选项卡
2
切换到安全选项卡下,点击可信站点,然后单击站点按钮
3
可信站点窗口输入网址到可信站点的区域,点击添加按钮,网址则会添加到网站列表下,最后关闭可信站点窗口
4
还是在安全选项卡下的可信站点,点击自定义级别
5
打开受信任的站点区域窗口,找到跨域浏览窗口和框架选择启用
6
在当前窗口中继续往下翻,通过域访问数据源也选择启用,点击确定关闭受信任的站点区域窗口
7
在Internet窗口也点击确定按钮,同时关闭浏览器
8
在请求的js脚本中添加是否允许跨域访问的权限,jQuery.support.cors默认值为true,则代表允许;反之,不允许。设置完成,重新打开浏览器验证即可
F. ie浏览器的跨域问题
那个。。。把IE换了吧,不稳定。。。我可是被深深地伤害过。。。(没财富了,求打赏。。。)
G. IE8.0下iframe跨域的实现
IE7可以用P3P头解决,IE8目前还没有好的办法,P3P头也不认了。如果你frame页和主页在同一个域名下,可以设置X-FRAME-OPTIONS头为SAMEORIGIN。
关于设置http头,查下你的编程语言书,都有。header("xxx")或者header.set啥的
H. 跨域有哪几种方式
跨源资源共享
通过 XHR 实现 Ajax 通信的一个主要限制,来源于跨域安全策略。默认情况下,XHR 对象只能访 问与包含它的页面位于同一个域中的资源。这种安全策略可以预防某些恶意行为。但是,实现合理的跨 域请求对开发某些浏览器应用程序也是至关重要的。
CORS(Cross-Origin Resource Sharing,跨源资源共享)是 W3C 的一个工作草案,定义了在必须访 问跨源资源时,浏览器与服务器应该如何沟通。CORS 背后的基本思想,就是使用自定义的 HTTP 头部 让浏览器与服务器进行沟通,从而决定请求或响应是应该成功,还是应该失败。
比如一个简单的使用 GET 或 POST 发送的请求,它没有自定义的头部,而主体内容是 text/plain。在 发送该请求时,需要给它附加一个额外的 Origin 头部,其中包含请求页面的源信息(协议、域名和端 口),以便服务器根据这个头部信息来决定是否给予响应。下面是 Origin 头部的一个示例:

这个例子通过查询地理定位服务来显示你的 IP 地址和位置信息。
JSONP 之所以在开发人员中极为流行,主要原因是它非常简单易用。与图像 Ping 相比,它的优点 在于能够直接访问响应文本,支持在浏览器与服务器之间双向通信。不过,JSONP 也有两点不足。
首先,JSONP 是从其他域中加载代码执行。如果其他域不安全,很可能会在响应中夹带一些恶意代码,而此时除了完全放弃 JSONP 调用之外,没有办法追究。因此在使用不是你自己运维的 Web 服务时, 一定得保证它安全可靠。
其次,要确定 JSONP 请求是否失败并不容易。虽然 HTML5 给<script>元素新增了一个 onerror 事件处理程序,但目前还没有得到任何浏览器支持。为此,开发人员不得不使用计时器检测指定时间内是否接收到了响应。但就算这样也不能尽如人意,毕竟不是每个用户上网的速度和带宽都一样。
参考:javascript高级程序设计第21章