如何为XMLHTTPRequest指定外部网站

时间:2009-05-04 16:53:34

标签: javascript http xmlhttprequest

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

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

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

5 个答案:

答案 0 :(得分:7)

出于安全考虑,你不能这样做。有关JavaScript的信息,请参阅same origin policy

有一些解决方法可以利用浏览器错误或角落案例,但不建议使用它们。

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

答案 1 :(得分:6)

这听起来像Same Origin Policy的坏情况,我的朋友:)。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

确实可以。尽管不在任何浏览器中。

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

既然你正在做一些hacky事情,为什么不先试着在IE8上使用呢?

答案 4 :(得分:1)

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

Access-Control-Allow-Origin: *