另一个域上的ajax响应

时间:2013-12-05 05:55:04

标签: javascript php jquery ajax

我有特定的场景可以使用,对许多开发人员来说很有趣也很有帮助,我有js文件和一个php文件,在js文件中代码AJAX,使用http请求发送参数到php文件并获得响应。

现在我有2个域名

第1个域

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

第二个域

我想使用Javascript或AJAX

显示来自第一个域数据库的HTML代码

有没有办法做这种伎俩?

2 个答案:

答案 0 :(得分:0)

您需要使用CORS technology,同时查看jsonp

维基百科来源:

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

简单示例:

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

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

如果online-personal-calendar.com允许该请求,它会在其响应中发送一个Access-Control-Allow-Origin(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(Internet Explorer 8& 9)通过XDomainRequest对象提供部分支持。
  4. 基于Presto的浏览器(Opera)在Opera 12.00和Opera Mobile 12中实现CORS,但不支持Opera Mini。
  5. 以下浏览器在缺乏CORS支持方面也值得注意:  1. Camino没有在2.0.x版本系列中实现CORS,因为这些版本基于Gecko 1.9.0。  2.从版本0.10.2开始,Arora公开了WebKit与CORS相关的API,但尝试的跨源请求将失败。

答案 1 :(得分:0)

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