另一个域上的ajax响应


ajax response on another domain

我有特定的场景要处理,这对许多开发人员来说是有趣和有帮助的,我有js文件和php文件,在js文件中我编码AJAX,使用http请求将参数发送到php文件并获得响应。

现在我有2个域

在第一个域

我有数据库,存储一些html代码,可以创建AJAX将数据从数据库中获取到Javascript文件。

在第二域

我想使用Javascript或AJAX 显示来自第一域数据库的HTML代码

有什么办法可以做这种把戏吗?

您可以在服务器端编写一个包装脚本来调用第二个域,然后只调用您的脚本。

您还需要使用CORS技术来查看jsonp

维基百科来源:

跨来源资源共享(CORS)是一种允许从资源来源域之外的另一个域请求网页上的许多资源(例如字体、JavaScript等)的机制。特别是,JavaScript的AJAX调用可以使用XMLHttpRequest机制。根据同源安全政策,这种"跨域"请求将被网络浏览器禁止。CORS定义了浏览器和服务器可以交互的方式,以确定是否允许跨源请求。它比只允许同源请求更有用,但比简单地允许所有此类跨源请求更安全。

简单示例:

要启动跨源请求,浏览器会发送带有origin HTTP标头的请求。此标头的值是为页面提供服务的域。例如,假设http://www.example-social-network.com尝试访问online-personal-calendar.com中的用户数据。如果用户的浏览器实现CORS,则以下请求标头将发送到online-person al-calendar.com:

Origin: http://www.example-social-network.com

如果online-personal-calendar.com允许请求,它会在响应中发送一个访问控制允许来源(ACAO)标头。标头的值指示允许哪些原始站点。例如,对先前请求的响应可能包含以下内容:

Access-Control-Allow-Origin: http://www.example-social-network.com

如果服务器不允许跨源请求,浏览器将向example-social-network.com页面而不是online-personal-calendar.com响应发送错误。

为了允许从所有域访问,服务器可以发送以下响应标头:

Access-Control-Allow-Origin: *

浏览器支持:

基于以下布局引擎的所有浏览器都支持CORS:

  1. Gecko 1.9.1(Firefox 3.5、SeaMonkey 2.0、Camino 2.1)及以上版本
  2. WebKit(初始版本不确定,Safari 4及以上,Google Chrome 3及以上,可能更早)
  3. MSHTML/Trident 6.0(Internet Explorer 10)具有本机支持。MSHTML/Trident 4.0&5.0(InternetExplorer8&9)通过XDomainRequest对象提供部分支持
  4. 基于Presto的浏览器(Opera)从Opera 12.00和Opera Mobile 12开始实现CORS,但不是Opera Mini

以下浏览器在缺乏CORS支持方面也值得注意:1.Camino没有在2.0.x发布系列中实现CORS,因为这些版本是基于Gecko 1.9.0的。2.从0.10.2版本开始,Arora公开了WebKit的CORS相关API,但尝试跨源请求将失败。