4

在 javascript 中使用 XMLHTTPRequest 时,我想将其发送到外部网站,而不是托管 .js 文件的网站。要将其发送到当前服务器上的 test.php,我会使用

request.open("POST", "test.php", true);

但是对于第二个争论,我如何将其发送到另一个网站。“example.com/test.php”在当前服务器上查找文件,而“ http://example.com/test.php ”似乎完全失败了。

4

5 回答 5

7

出于安全原因,您不能这样做。请参阅 JavaScript 的同源策略

有一些利用浏览器错误或极端情况的解决方法,但不建议使用它们。

最好的方法是使用服务器端代理来接收 Ajax 请求,然后将 HTTP 请求发送到其他服务器。这应该通过清理输入并将发送的请求类型和联系的服务器列入白名单来仔细实施。

于 2009-05-04T16:59:39.077 回答
6

这听起来像是同源政策的一个糟糕案例,我的朋友 :)

于 2009-05-04T16:56:06.977 回答
1

您不能(在大多数情况下)使用 XmlHttpRequest 从外部网站获取数据。但是,您可以做的是动态创建 SCRIPT 标记并引用外部地址。jQuery在功能上将其包装为 ajax 处理的一部分。

于 2009-05-04T17:01:31.817 回答
1

确实可以。虽然不在任何浏览器中。

在 Internet Explorer 8.0 中有XDomainRequest,这是一个启用跨域请求的对象。您需要通过首先使用“*”或请求者域名发送 Access-Control-Allow-Origin 标头来正确处理服务器上使用此对象发出的请求。

既然您无论如何都在做一些 hacky 的事情,为什么不先尝试在 IE8 上使用它呢?

于 2009-05-04T19:37:28.773 回答
1

如果您可以控制服务器,则可以在 HTTP 回复中使用此标头,尽管它可能不适用于所有浏览器。

Access-Control-Allow-Origin: *
于 2012-04-03T21:30:58.337 回答