【问题标题】:modify getJSON to work with CORS修改 getJSON 以使用 CORS
【发布时间】:2014-05-12 19:09:29
【问题描述】:

我正在寻找允许使用 $.getJSON 进行跨域访问的方法。我遇到了一些解决方案,这些解决方案表明使用 CORS 是解决这个问题的方法。但是大多数解决方案都有通用的ajax格式。

我无法使用 JSONP,因为我从无权访问的服务器获取数据。有没有办法使用 $.getJSON 修改此代码以获取数据?

$.getJSON(jsonURL, function(res){
    console.log(JSON.stringify(res));
});

或者我必须对 CORS 使用 ajax 格式吗?

【问题讨论】:

    标签: javascript jquery ajax getjson same-origin-policy


    【解决方案1】:

    如果您有权为加载 JS 脚本的页面设置 HTTP 响应标头,那么是的,您可以使用 CORS 发送跨域请求。但是,旧版浏览器不支持此功能。

    您需要设置Access-Control-Allow-Origin 标头,例如

    Access-Control-Allow-Origin: *
    

    或者

    Access-Control-Allow-Origin: http://host-of-other-site.com 
    

    https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS

    【讨论】:

    • 您能否澄清一下您所说的确切含义 - the HTTP Response Headers for the page that loads your JS scripts。我目前正在 HTML 文件中编写 javascript 来获取数据。
    • 如果您正在加载www.my-server.com/your_page(其中 your_page 包含您的 JS 代码等),您需要更改您的 Web 服务器(apache、nginx、WEBrick 等)以设置 HTTP 标头your_page 或所有页面的 HTTP 响应。这是网络服务器配置和安全问题的问题。
    • 我的 HTML 文件在我的本地系统 - MAC 桌面上。所以我不清楚该怎么做。
    • 或者,我可以编写 python 脚本等来获取数据吗?当前的问题与浏览器有关 - 对吗?
    • 当然,如果后端检索数据,您可以规避该问题。但是你需要某种后端。
    【解决方案2】:

    我无权访问的服务器

    我想,这会折断你的脖子。 您需要某种对服务器的访问权限或联系拥有该权限的人。至少你要调整HTTP-Header进入你的域Access-Control-Allow-Origin是关键字。

    看看MDN

    【讨论】:

    • Server which I do not have access 我的意思是我有一个以 json 格式返回数据的 URL。我无法修改返回为 jsoncallback 格式的内容。
    • 正如我所写:源必须允许带有Access-Control-Allow-Origin 的请求。如果您被允许访问,一切都应该照常进行。 $.getJSON(URL, f).
    • “至少你必须调整 HTTP-Header 以输入你的域 Access-Control-Allow-Origin os 关键字。” 服务器不必明确允许来源,它可以回显接收到的任何内容(这就是开放式 CORS 服务器的做法)。但是,是的,基本上你是正确的:如果 OP 的来源已经被允许,那么除非 OP 使用的是 IE9 或更早版本,否则$.getJSON 应该可以工作。如果不允许 OP 的来源,那么他/她必须让服务器的运营商允许它,或者不能直接从浏览器使用该 URL。
    • @T.J.Crowder 我也在考虑其他选择。我们可以有一个 python 脚本来发出 HTTP Post/Get 请求,而不是使用来自 javascript 的 getJSON 吗?
    • @Dinesh:是的,这是一个相当标准的解决方法,从您自己的服务器发出请求。
    猜你喜欢
    • 2013-06-14
    • 2016-08-04
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多