如何跨站获取数据?我正在使用 $.post
我正在测试本地主机上的 JavaScript 代码。该文件需要来自远程服务器的 JSON 格式的数据。当我直接点击 JSON url 时,我得到了数据,但在 javascript 中,我得到了空响应。
可能是什么原因?我正在使用 jquery post 方法来获取数据。
I'm testing a javascript code which is on localhost. This file requires data from a remote server in JSON format. When I directly hit the JSON url, I get the data, but in javascript, I'm getting empty response.
What might be the reason? I'm using jquery post method to get the data.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
由于安全原因,您无法使用 JavaScript 访问来自不同域的任何资源。 jQuery 对此无能为力,但有一些方法可以实现此目的,例如
JSONP
或YQL
。查看使用
YQL
进行跨域AJAX
请求的快速提示。http: //net.tutsplus.com/tutorials/javascript-ajax/quick-tip-cross-domain-ajax-request-with-yql-and-jquery/
You cannot access any resource from different domain using JavaScript due to security reasons. jQuery cannot do anything for this but there are some ways to achieve this like
JSONP
orYQL
.Take a look at this quick tip for cross domain
AJAX
request withYQL
.http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-cross-domain-ajax-request-with-yql-and-jquery/
$.post
是一个ajax方法,您不能使用ajax方法访问来自不同来源的数据。有关详细信息,请参阅 jQuery 文档:
$.post
is an ajax method, and you can't use ajax methods to access data from a different origin.See the jQuery docs for details:
您应该研究一下使用 JavaScript 设置的保护措施。这是同源政策。基本上,这意味着如果您想对来自与您所在页面来源不同的服务器的数据执行 XmlHttpRequest,则不能,除非您跳过了一些困难。
查看 JSON-P 或 jQuery 的方法来克服这个问题。
There's a protective measure set up with JavaScript that you should look into. It's the same origin policy. Basically it means if you want to do an XmlHttpRequest for data from a server that isn't of the same origin that the page you are on, you can't, unless you jump through hoops.
Check out JSON-P, or jQuery's methods for overcoming this.
您请求的服务器必须支持 JSONP 或 CORS。
否则,这是不可能的。
也不可能使用
POST
发出 JSONP 请求,它必须是GET
The server you are requesting from must either support JSONP or CORS.
Otherwise, it is not possible.
It is also not possible to make a JSONP request using
POST
, it must beGET
出于安全考虑,从不同域请求数据受到限制(请参阅CORS ),专门用于防止XSS(跨站脚本)攻击。
您可以尝试几种替代方案:
您可以使用YQL 从另一个域请求资源。
除了这些替代方案之外,您始终可以创建服务器代理并让该代理查询域并返回结果。
Requesting data from a different domain is restricted as a security concern (see CORS), specifically to prevent XSS(cross site scripting) attacks.
You can try a couple of alternatives:
You can use YQL to request resources from another domain.
Apart from these alternatives you can always make a server proxy and have that proxy query the domain and return results.
正如其他人所说,您不能使用 AJAX 访问远程服务器。你必须使用 JSONP。如果您无法控制其他服务器,或者其他服务器不提供 JSONP,则必须使用代理。
用 PHP 编写一个非常容易。 http://www.betavine.net/bvportal/blog/view.html?blogId=101&postId=ff8080811afe49d3011afe4bb5de0003
As others have said, you cannot use AJAX to access a remote server. You have to use JSONP. If you don't have control of the other server, or if the other server doesn't offer JSONP, you have to use a proxy.
It's really easy to write one in PHP. http://www.betavine.net/bvportal/blog/view.html?blogId=101&postId=ff8080811afe49d3011afe4bb5de0003