【问题标题】:jquery json error, when i want to get json from steam marketjquery json错误,当我想从steam市场获取json时
【发布时间】:2015-01-14 23:00:28
【问题描述】:

我对 Steam 的 ajax 请求有疑问。 我想从 Steam 市场获取价格。

function jPrice(httpToJson) {
    $.getJSON(httpToJson, function(data) {
        return data.median_price;
    });
}

当我调用函数时

jPrice('http://steamcommunity.com/market/priceoverview/?country=US&currency=1&appid=730&market_hash_name=StatTrak%E2%84%A2%20P250%20%7C%20Steel%20Disruption%20%28Factory%20New%29');

我收到一个错误:

XMLHttpRequest 无法加载 http://steamcommunity.com/market/priceoverview/?country=US&currency=1&appid=730&market_hash_name=StatTrak%E2%84%A2%20P250%20%7C%20Steel%20Disruption%20%28Factory%20New%29。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“http://lоcalhоst:63342”。

我试试:

  • 将 php 标头 Access-Control-Allow-Origin 设置为 *
  • JSONP

RESULT -> 同样的事情(错误)!

也许有人知道这个问题的解决方案?

【问题讨论】:

    标签: javascript jquery ajax json xmlhttprequest


    【解决方案1】:

    通过将标头 Access-Control-Allow-Origin 设置为 * 或发送 JSONP 请求,您将无法通过直接针对 steamcommunity.com 的 ajax 请求在浏览器中获取结果。

    为此,steamcommunity.com 应在响应中添加 CORS 标头(您看到的错误消息意味着它们不存在),或将输出格式化为 JSON-P。他们也没有这样做。

    这是一个浏览器限制,不允许通过 ajax 加载来自不同来源的内容。您需要做的是引入一个中间件,让您的后端服务器向 steamcommunity.com 发出请求并返回相同的响应,并对您的服务器进行 ajax 调用。这将起作用,您的后端正在发送请求,并且由于它不是浏览器请求,因此响应将登陆,而您的 ajax 调用也将能够获得响应,因为它是针对同一域发出的

    【讨论】:

    • 感谢您的回答!我再次尝试设置 CORS。我搜索 php 脚本 there 当我在派生的页面上重新加载服务器和浏览器时“你有 CORS!”但是当我尝试获取 ajax 请求 => 相同的错误 :(
    • 欢迎您。问题是他们的服务器没有配置 CORS。这篇文章描述的是您配置服务器以支持跨域请求的方式。你应该做的是制作一个 PHP 脚本来发送你从 ajax 发送的请求,并返回响应。而且,从您的 ajax 目标您的页面
    猜你喜欢
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 2020-09-15
    • 2016-02-14
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    相关资源
    最近更新 更多