【问题标题】:cross-domain AJAX post call跨域 AJAX 后调用
【发布时间】:2011-07-25 06:09:46
【问题描述】:

我必须对位于另一台服务器上的 asp 表单进行 POST 调用(带参数)。

对于开发,我在同一台服务器上进行了此操作,并且运行良好,但现在我正在另一台服务器上对其进行测试,而不是收到 200 状态,而是收到 0 状态。

我认为这是因为它是一个跨域 AJAX 调用,它是唯一改变的东西。那么我该如何拨打这个电话呢?是否有任何文件可以放在服务器/客户端上以允许此调用(如 flash,...)?

谢谢!

【问题讨论】:

  • 为了进一步的帮助,我们可能需要了解 ajax 调用的本质

标签: javascript ajax cross-domain http-post


【解决方案1】:

是的,假设您可以更改连接的服务器

你可以实现Cross Origin Resource Sharing (CORS)

如果要允许所有域访问,则需要服务器返回Access-Control-Allow-Origin: *,否则返回Access-Control-Allow-Origin: http://yourdomain.com

如果您无法更改您正在访问的服务器,您需要在您的脚本来自的服务器上使用代理 - 或者调查他们是否已发布 API 以返回例如 JSONP

这里有更多细节

以及这个问题右侧的几个链接

【讨论】:

  • 目前支持似乎相当有限。
  • 我查看了您的链接,但找不到应该在哪里声明所有这些“Access-Control-Allow-Origin”,...
  • @dvhh - 大多数现代浏览器都支持它,例如 FF3.5+、Safari5、IE8+(使用 XDR)
  • 好吧,看来我想要的不可能了
【解决方案2】:

您可以创建代理脚本,也可以使用 jsonp。 更简单的方法是在您的服务器上使用代理脚本。

【讨论】:

  • 很遗憾,我无法修改服务器上的任何内容
  • 另一种解决方案是重写您的 ajax 调用以使用 iframe 代替(不幸的是,这有点幼稚)
  • @dvhh 但他只能发送数据,不能收到任何回复
  • 您不能使用 POST 请求执行 JSONP。
猜你喜欢
  • 2011-02-03
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 2012-02-08
  • 2013-03-15
  • 1970-01-01
  • 2012-08-27
  • 2013-12-07
相关资源
最近更新 更多