【问题标题】:Send data from PHP to Javascript in different domains将数据从 PHP 发送到不同域中的 Javascript
【发布时间】:2012-06-16 16:11:58
【问题描述】:

我使用 AJAX 将数据从 Javascript 发送到 PHP 文件,但由于知道 Javascript 代码与 PHP 代码在不同的域中,我无法将响应数据从 PHP 取回给 Javascript。有人有解决这个问题的想法吗?

问候,

【问题讨论】:

  • 如果您的 JS 在不同的域中,它如何首先将数据发送到 PHP?
  • @MarcB:您可以向任何域发出传出 AJAX 请求,不是吗?
  • @xbonez:不,这就是 ajax 安全模型的重点。您只能让 JS 向加载代码的同一域发送请求。否则,您可能会让用户的浏览器使用 ajax 请求向他们想要的任何站点发送垃圾邮件。这不像 google.com 会说“哦,嘿,这个请求来自一些从 yahoo.com 加载的 JS 代码。我不会回应”
  • @MarcB:我怎么能向另一个域发出 AJAX 请求,在这种情况下,在这个例子中:jsfiddle.net/cLdGY/8。我认为问题不在于 Google 会拒绝传入的请求。问题是谷歌发送的回复会被雅虎拒绝,说“我不知道这个回复来自哪里,所以我不相信它。”

标签: php javascript cross-domain


【解决方案1】:

AFAIK 出于安全原因,无法将 ajax 请求发送到不同的域。 我可以想到一些解决方法:

  • 调用 php 代理,然后通过套接字或 curl 发出请求。 Example
  • 制作一个调用它的flash电影并设置一个crossdomain.xml文件

【讨论】:

  • re: AFAIK 出于安全原因,没有办法将 ajax 请求发送到不同的域,JSONP 是目前常用的方法。 en.wikipedia.org/wiki/JSONP
  • 我没有听说过。有趣的是,我不会直接使用它来解决安全问题
【解决方案2】:

跨域 javascript 可能很困难。看看http://easyxdm.net/wp/

【讨论】:

    【解决方案3】:

    要在 JS 跨域中接收响应,您可以通过添加 Access-Control-Allow-Origin 标头来启用 CORS。但是,这可能参差不齐。

    更好的解决方案是将您的回复编码为JSONP

    这是一个使用 JSONP 的示例。我调用的 API 是我自己的,它支持 JSONP 响应。 JSONP Example

    相比之下,以下示例也适用。在这种情况下,我没有使用 JSONP。此请求有效,因为我的 API 启用了 CORS。但是,就像我说的,我发现这有点参差不齐,并且会推荐 JSONP。

    CORS Example

    【讨论】:

      猜你喜欢
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多