`
carffuca
  • 浏览: 20748 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

令人头疼的Cross-Domain AJAX

    博客分类:
  • Ajax
阅读更多

最近想写一个基于AJAX的应用,不过和以往不一样的是,我想直接请求一个外部网站地址(比如某Blog的RSS地址),用外部网站的返回来做这个AJAX应用。于是,我开始动手了,在本地写了一个简单的页面,直接使用的jQuery的AJAX请求。在Firefox里面打开页面,没反映,到是Firefox的console报错了,从没见过的奇怪错误。Google一下,才知道这是因为我调用了跨域的XMLHttpRequest,这是不被允许的。Faint!

Cross Domain AJAX主要就是A.com网站的页面发出一个XMLHttpRequest,这个Request的url是B.com,这样的请求是被禁止的。关于 Cross Domain AJAX的安全问题现在还在被大家讨论着。不过就目前的情况来看,一定要靠一些非常规手段来解决这个问题了。当前比较流行的解决方法主要有下面几种:

  • 跨域代理(Cross Domain Proxy)。主要原理就是用php或者其他语言写一个代理请求的转发过程。客户端请求自己的服务器,服务器把请求转发到目标地址并且得到回应,服务器再 把结果返回给客户端。这个过程,对于开发者来说还是不错的选择,因为你可以在服务器上对回应的结果做自己的处理,可以决定需不需把结果要返回给客户端。

  • JSON+动态添加脚本标签(JSON+Dynamic Script Tag)。实现的主要原理是,远端服务器返回的不是XML格式的数据,而是JSON格式的数据。而客户端发出请求的过程,其实是在页面动态的增加一个诸如 <script src="”请求地址”" type="text/javascript"></script> 标签,这个过程会把请求到的那个js文件跑一边,利用这点特性,我们动态的得到了数据。 (JSON and the Dynamic Script Tag: Easy, XML-less Web Services for JavaScript

  • 使用Flash来跨域请求。 有人想出在本地增加一个Flash文件,靠Flash文件来请求跨域的资源。具体方法可以看( Cross-domain AJAX using FlashFlash to the Rescue)。我尝试了一下,不过发现这种方式的请求需要远端服务器上有一个crossdomain.xml文件,这个文件用来描述可访问本资源的网站。

第一种方法只要在发起请求端有所改变就能实现跨域,而后两种都需要同时在发起请求端和回复请求端做点事情才能实现。第一种方式比较简单,对于已有的 系统改动不大。但是,第二中方式却是现在的发展趋势,不可小视。不过在我目前的状况(只能纯写HTML+JS,没有其他权限)下,看上去对跨域是无能为力 了……

分享到:
评论
2 楼 herolin 2009-01-21  
小弟有篇网志有参考到您这篇文章

http://herolin.mine.nu/entry/jsonp-cross-domain-jQuery-proxy-iframe再请多多指教
1 楼 Curapica 2008-11-21  
哦原来如此

相关推荐

    Asymmetric Co-Teaching for Unsupervised Cross-Domain

    Asymmetric Co-Teaching for Unsupervised Cross-Domain Person Re-Identification Asymmetric Co-Teaching for Unsupervised Cross-Domain Person Re-Identification 是一种旨在解决跨域人体重识别问题的方法。...

    Cross-Domain Sentiment Classification via Spectral Feature Alignment

    ### 跨域情感分类通过谱特征对齐:深入解析与技术要点 在当前的信息时代,用户生成的内容(如评论、博客等)蕴含着丰富的意见和情感信息,这为情感分析提供了丰富的数据源。情感分类旨在自动预测用户发布的情感数据...

    vue-cross-domain.zip

    "vue-cross-domain.zip"是一个示例项目,专门演示了如何在Vue中实现跨域请求。 跨域是浏览器的安全策略,它禁止了一个源(协议+域名+端口)的文档或脚本请求另一个源的数据。然而,在现代Web开发中,前后端分离的...

    iframe-cross-domain.rar

    本示例涉及到的“iframe-cross-domain.rar”文件,很可能包含了一组用于演示或教学如何处理iframe跨域问题的资源。`iframe`(内联框架)是HTML中一个非常有用的元素,它允许在一个页面中嵌入另一个网页,从而实现...

    cross-request3.0谷歌插件.zip

    【标题】"cross-request3.0谷歌插件.zip"是一个包含最新版本的cross-request3.0插件的压缩包,该插件专为谷歌浏览器(Chrome)设计。它旨在提升开发人员在API测试和调试过程中的效率,尤其与YApi接口管理工具配合...

    cross-domain-storage:跨域localStorage

    安装npm我跨域存储用法主持人var createHost = require ( 'cross-domain-storage/host' ) ;主机(allowedDomains) 使用允许的域数组进行调用。 var storageHost = createHost ( [ { origin : 'http://www.foo.com' ...

    php-cross-domain-proxy, 跨域请求的PHP代理.zip

    php-cross-domain-proxy, 跨域请求的PHP代理 PHP CORS代理 以前称为"php跨域( AJAX ) 代理PHP CORS代理是一个简单的PHP脚本,允许跨域请求。 它可以以用来访问第三方网站的资源当不能在目标网站 换句话说,上启用...

    cross-domain.7z

    在Web开发中,跨域(Cross-Origin)是一个常见的问题,特别是在使用Ajax进行前后端交互时。"cross-domain.7z"这个压缩包显然是为了提供一个Java后台解决跨域问题的方案。下面我们将深入探讨跨域的原理,以及如何通过...

    Cross Domain-CROS(跨域助手).zip

    Cross Domain will help you to deal with cross domain - CORS problem. This is tool helpful when face with cross domain issue.

    iframe-cross-domain-demo

    用postMessage解决跨域问题的完整demo,下载后通过node启动可直接测试,使用前请仔细阅读readme文件 可参考博客:https://blog.csdn.net/github_39274378/article/details/81671363

    For Cross-Domain person Re-ID 文献速览

    Instance-Guided Context Rendering for Cross-Domain Person Re-Identification Idea:使用U-net网络,生成源域行人图像和目标域背景相结合的多张图像,扩充数据集的延展性。 Loss:使用了四种loss帮助网络进行训练...

    cross-domain-all:跨域、不同域iframe相互调用, iframe传值

    cross-domain 跨域集成方案 点击主页 send Random 按钮 点击子页(引用页) popup 按钮 1 添加依赖 &lt;groupId&gt;com.os.cross-domain&lt;/groupId&gt; &lt;artifactId&gt;cross-domain-lib &lt;version&gt;1.0-SNAPSHOT 2 添加映射 2.1...

    Cross-Domain Sentiment Classification with Target Domain Specific Information

    提出了一种具有目标域特定信息的跨域情感分类。文中提出的模型是对源目标数据、最终目标分别进行编码,编码分别通过源分类器训练源丰富的标签数据、特定分类器训练目标标签数据,两个分类器共同训练目标未标记数据。...

    cross-domain-sso:跨域单点登录案例研究

    跨域单点登录(Cross-Domain Single Sign-On, 简称CDSO)是互联网应用中常见的一种身份验证机制,允许用户在一个域名下登录后,无需再次输入凭证即可访问其他相关联的域名下的资源。这极大地提高了用户体验,减少了...

    cross-domain:一个利用html5的跨域api postMessage解决多iframe跨域通信的框架

    cross-domain一个利用html5的跨域api postMessage解决多iframe跨域通信的js框架背景最初公司只有一个系统来做销售,随着公司业务越来越多,搭建很多类似的系统(这些系统本来是没有任何关系的,每个系统目前都非常...

    A_Blockchain-based_Multi-domain_Authentication_Scheme for vehic

    标题中的"A Blockchain-based Multi-domain Authentication Scheme for vehic"指的是一个基于区块链技术的多域车辆身份验证方案,旨在解决车联网(VANET,Vehicular Ad-hoc Network)环境中的隐私保护和安全问题。...

Global site tag (gtag.js) - Google Analytics