如何在外部域使用jQuery AJAX?
我试图使用.get()或.post()执行简单的jQuery AJAX尝试。
如果我的服务器上有本地副本,请执行以下操作:
$.get('/hash.php',...,...)
我在我的控制台中使用firebug监视获取已完成并得到响应。
我改变的只是外部服务器的URI,没有任何反应。
$.get('https://secure.mysite.com/subdir/hash.php',...,...)
如果我关闭’s’或者我使用post而没有帮助。 我错过了一些我应该在jQuery中使用的参数吗?
编辑:我忘了提到我这样做的原因是因为我最终从PHP4站点迁移到PHP5站点,但是现在PHP4站点需要一个不在PHP4中的function。 所以我打电话给PHP5服务器来做。 我想我有一个很好的解决方法。 谢谢!
您不能将Ajax请求发送到除部署应用程序的其他域之外的其他域。 这是因为在web-browers中实现了同源策略 – 一种安全措施。
但是,有两种可能的解决方案:
- 将请求发送到您自己的服务器,该服务器将充当另一个服务器的代理(通过PHP脚本,或者更好,使用Apache的一些
mod_proxy_http
模块) - 或不使用“Ajax”,但其他技术,如动态创建
标签 - 不受SOP约束。
由于浏览器的原因,您通常无法在域外执行Ajax。 但是,使用JSONP可以做到这一点。 jQuery现在还有一个用于Ajax的jsonp参数。 要完成这项工作,您需要控制服务器的输出。
Javascript无法访问javascript文件来自之外的服务器。
这是一个安全function。
根据您希望获得的浏览器特定方式,您可以解决这个问题,但这会变得有点滑坡。
您不能直接跨域ajax请求,这将是一个安全问题。
您将需要从jquery调用本地php文件并让php文件与其他域通信。
有一个名为JSONP的方法用于规避它。 请参阅SO#570100的第二个回复