【问题标题】:Cross domain / Cross browser , ajax call跨域/跨浏览器,ajax调用
【发布时间】:2012-08-27 02:12:48
【问题描述】:

这是场景,

我在abc.com 中有一个main.js 文件,它可以通过$.post("index.php") 访问来自同一域(abc.com) 的index.php 的内容。

这很好用,因为它是同一个域 ajax 调用。

但是现在,任何人都可以在他们的网站中加入main.js(比如域xyz.com)。

现在,路径index.php(在$.post("index.php") 中)指的是域xyz.com(不是abc.com)中的文件。如果我放一个绝对路径 http://www.abc.com/index.php ,这在某些浏览器中不起作用(跨域 ajax 限制)

现在,

如果我将允许跨域的标头放在 php 文件中,它也不起作用,在 ie 7 及以下版本中失败。

附言我需要将内容放在 index.php 文件中(而不是 main.js 中)。另外,我不想包含一个 php 文件

<script type='text/javascript' src='http://abc.com/index.php'></script>

而且我不希望在服务器中添加.js 文件以将其视为php 文件(这样我就可以将php 代码放入js 文件中)。

内容巨大,我不能做get请求或者jsonp(我觉得,jsonp不允许大数据)

我错过了什么吗?我怎样才能做到这一点?

【问题讨论】:

    标签: javascript jquery ajax cross-browser cross-domain


    【解决方案1】:

    您可以使用JSONPCORS 来实现此目的。

    我用过 JSONP,下周打算试试 CORS。我认为 CORS 仍然是异步的,所以这对我来说可能有优势。至少这是我的希望……

    【讨论】:

    • Cors 只是一个 apache 标头设置,允许从其他来源访问。
    • CORS 在 ie7 中不起作用(在 ie8 中有 hack)。如果我没记错的话,我需要做发布请求(jsonp 不支持)
    【解决方案2】:

    我认为你需要去server side solution。在 php 中读取文件(即 index.php)并保存所需的输出以在 hidden field 和准备好的 DOM 中使用您可以使用该隐藏字段中的数据。

    【讨论】:

    • 我做不到。任何网站都可以将我的main.js 放在他/她的网站上。我不希望他们做任何配置
    【解决方案3】:

    服务器端的 curl 请求也应该可以工作。我会说先尝试 JSONP,但如果它不起作用,请使用 curl 请求

    【讨论】:

      猜你喜欢
      • 2017-01-23
      • 2013-06-01
      • 2011-01-20
      • 1970-01-01
      • 2013-10-12
      • 1970-01-01
      • 2017-11-17
      • 2011-02-03
      • 2010-10-13
      相关资源
      最近更新 更多