问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

本来正常的ajax调用出现了跨域问题

发布网友 发布时间:2022-04-23 05:10

我来回答

1个回答

热心网友 时间:2022-04-09 12:14

做过跨越多个网站的Ajax开发的朋友都知道,如果在A网站中, 我们希望使用Ajax来获得B网站中的特定内容, 如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题。 Ajax的跨域访问问题是现有的Ajax开发人员比较常遇到的问 题。 IE对于跨域访问的处理是,弹出警告框,提醒用户。 如果用户将该网站纳入可信任网站,或者调低安全级别, 那么这个问题IE就不会在提醒你。 FireFox等其它非微软的浏览器遇到跨域访问, 则解决方案统一是拒绝访问。 有人说,IE是主流浏览器,只要它能正常使用就好了。此言差已, IE虽然能够处理,但是是有前提的, 要么用户不厌其烦地在页面弹出警告框之后点击是( 点击否就不执行该Ajax调用了), 要么用户将该网站纳入可信任站点。这两种做法, 在企业管理系统的应用中倒是比较常见, 因为系统管理员可以以行政手段保证用户的行为。 但是对于互联网上的网站或者门户开发,这种做法则不行。 最近遇到了这个问题, 需要在跨域访问结束之后完成使主窗口出现一些特效, 搜索了一些资料, 通过不断尝试以及在不同浏览器中进行兼容性测试, 找到了几个可行的方案: 1、Web代理的方式。 即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网 站的指定页面,由该页面代替用户页面完成交互, 从而返回合适的结果。 此方案可以解决现阶段所能够想到的多数跨域访问问题, 但要求A网站提供Web代理的支持, 因此A网站与B网站之间必须是紧密协作的,且每次交互过程, A网站的服务器负担增加,且无法代用户保存session状态。 2、on-Demand方式。MYMSN的门户就用的这种方式, 不过MYMSN中不涉及跨域访问问题。 动态控制script标记的生成, 通过修改script标记的src属性完成对跨域页面的调用。 此方案存在的缺陷是, script的src属性完成该调用时采取的方式时get方式, 如果请求时传递的字符串过大时,可能会无法正常运行。 不过此方案非常适合聚合类门户使用。 3、iframe方式。 查看过醒来在javaeye上的一篇关于跨域访问的帖子, 他提到自己已经用iframe的方式解决了跨域访问问题。 数据提交跟获取,采用iframe这种方式的确可以了, 但由于父窗口与子窗口之间不能交互(跨域访问的情况下, 这种交互被拒绝),因此无法完成对父窗口效果的影响。 4、用户本地转储方式: IE本身依附于windows平台的特性为我们提供了一种基于i frame,利用内存来“绕行”的方案, 即两个window之间可以在客户端通过windows剪贴板的 方式进行数据传输, 只需要在接受数据的一方设置Interval进行轮询, 获得结果后清除Interval即可。 FF的平*立性决定了它不支持剪贴板这种方式, 而以往版本的FF中存在的插件漏洞又被fixed了, 所以FF无法通过内存来完成暗渡陈仓。 而由于文件操作FF也没有提供支持( 无法通过Cookie跨域完成数据传递), 致使这种技巧性的方式只能在IE中使用。 5、我自己用于解决这类问题的方式:结合了前面几种方式, 在访问A网站时,先请求B网站完成数据处理, 再根据返回的标识来获得所需的结果。这种方法的缺点也很明显, B网站的负载增大了。优点,对session也实现了保持, 同时A网站与B网站页面间的交互能力增强了。最重要的一点, 这种方案满足了我的全部需要。 总结一下,以上方案中可选择的情况下,我最推荐on- Demand方式,在不需要提交大量数据的情况下, 这种方式能够解决您的大部分问题。 参考资料: http://www.newbooks.com. cn/info/37166.html
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
抖音弹幕怎么关掉?怎么关闭抖音弹幕? 惠普LaserJet P3005D是否支持B5纸的双面打印? word打印出图片总是缺一部分怎么办-word打印图片不完整怎么解决_百度... 理想one哪里产的车辆? 抚州抚州ONE在哪里? one地址在哪里? 如何在图片上写字(如何在图片上添加文字) 网商贷为什么钱没到账 高级经济师职称怎么评 高级经济师需要评审吗 为什么设置了域名,微信还是跨域拒绝 / 蓝讯 用烤盘烤面包,烤箱的上火和下火温度各是多少 cannot load m3u8:crossdomain access denied:error 2048是什么意思 javaScript 跨域访问 被拒绝 如何解决 烤箱烤面包上火多少度下火多少度 用烤箱烤小面包需要上下多少度 面包烘焙上火和下火温度应该是多少? ipad可不可以分屏 微波炉可以做哪些简单的美食? 微信加好友,发送消息为什么没有显示 葡萄干+酸奶+鸡蛋+面粉用微波炉可以作什么好吃的。。? 为什么别人加微信我收不到提示? iphoneXS电量数字显示咋弄? iphonexs百分比电量显示 可以直接用微波炉烤面粉吗? 微信别人加我没有提示 我加别人别人也没有提示 怎么解除 别人加我微信,我收不到提示!为什么 微波炉可以做哪些美食啊?要家常方便的 家里只有面粉,鸡蛋,微波炉,能做些什么简单好吃的点心? 用微波炉 面粉 酵母粉 和佐料可以做什么? 无法读取跨域弹出页面的内容!提示“拒绝访问” 如何用CORS来解决JS中跨域的问题 面包房的烤箱烤面包时上,下火各是多少? ajax 跨域访问提示js拒绝访问,求解决办法 烤箱烤面包和蛋糕,分别调成多少度,多少分钟 请问跨域访问是什么意思啊,谢谢 每次手机接收验证码信息,看不到信息,都要退出程序才能看,怎么设置... iframe跨域报告拒绝访问问题。在项目iframe里面引入另一个域里面的一... 烤面包上下火温度时间是多久? 怎么才能收到以前手机号的验证码? 为什么我的jsonp跨域被拒绝 电烤箱烤面包多少度?多久? 什么叫ajax跨域访问 无法加载m3u8:跨域访问被拒绝:错误2048,如何解决? 第二次办跨区域临牌怎么办不了 为什么有人说ajax不能跨域是什么意思 不是可以通过ajax跨域访问吗 美国FI签证求答疑!!!关于跨区域和户口的问题。 JS:页面设置document.domain='baidu.com',然后用js生成iframe--S,调用S的contentWindow时拒绝访问!! Remoting TCP跨域访问 (模拟验证) 怎样家庭制作桃罐头?