【发布时间】:2015-10-24 09:39:10
【问题描述】:
我正在为我儿子的 Wordpress 网站做一些 javascript/jQuery 编程,我通常喜欢在我的家用电脑上进行测试,而不是在现场网站上进行测试。他的网站始终使用他的域名,因此为了进行测试,我在我的主机文件中输入条目以将他的域名重定向到我的本地主机。
但是,我正在尝试测试 Yahoo Finance api 的 json 回调,但我收到有关跨域资源共享的错误。雅虎显然对我的主机文件一无所知,所以它收到了我的请求,告诉它将结果发送到另一个域。
我不确定在我的本地系统上启用 CORS 是否会有所帮助,尽管我尝试过这样做。可能我错了,它应该可以工作,也许我启用它不正确,但我怀疑我需要在他的真实服务器上启用它(在 GoDaddy 上),我不知何故怀疑他们是否愿意这样做。
有人知道解决这个问题的方法吗?如果没有相当简单的解决方案,我想我会在直播服务器上测试,并使用一个未发布的页面进行测试,这应该是相当无害的。
编辑
我想我现在更了解正在发生的事情。我的理解是,这可以防止网站通过将我请求的数据重定向到不同的地址(或类似的地址)来拦截我请求的数据。
根据要求,这是我的测试代码:
var data = encodeURIComponent('select from yahoo.finance.quotes where symbol in ("GOOG")&env=http://datatables.org/alltables.env&format=json');
var url = 'http://query.yahooapis.com/v1/public/yql ';
jQuery.getJSON(url, 'q=' + data, callback);
我的回调函数永远不会被调用,所以这里不相关。我可以将整个 URL 粘贴到 Firefox 或 Chrome 的地址栏中,并正确获取数据,所以我知道这是对的。
我按照 Maximillian Laumeister 的建议尝试了命令行“google-chrome --disable-web-security”,并在控制台中收到此错误:
XMLHttpRequest cannot load http://query.yahooapis.com/v1/public/yql%20?q=select%20%20from%20yahoo.fina…OG%22)%26env%3Dhttp%3A%2F%2Fdatatables.org%2Falltables.env%26format%3Djson. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.wenboinvestment.com' is therefore not allowed access. The response had HTTP status code 404.
(他的网站是wenboinvestment.com)
【问题讨论】:
-
Marty,您应该分享您编写的发出请求的代码。
标签: javascript json cors