【问题标题】:JSON - CORS confusionJSON - CORS 混淆
【发布时间】:2015-05-28 21:51:17
【问题描述】:

我在检索要在小部件中使用的 JSON 提要时遇到问题。

我已经用谷歌搜索了它,只是似乎让自己更加困惑。

我有这个代码

function insertReply(content) {
    document.getElementById('holder').innerHTML = content.result;
}

// create script element
var script = document.createElement('script');
// assing src with callback name
script.src = 'https://www.googleapis.com/freebase/v1/text/en/bob_dylan?callback=insertReply';
// insert script to document and load content
document.body.appendChild(script);

来自这篇文章 - Get JSON data from external URL and display it in a div as plain text

效果很好。但是,如果我更改 URL,我不会在控制台中得到响应和错误。

新网址:http://finance.google.com/finance/info?client=ig&q=NASDAQ:GOOG

为什么一个有效而另一个无效?

编辑@Amit

Amit 对不起,我对 JQuery 和 javascript 很陌生。你把这些放在哪里?我有

<!DOCTYPE html>
<html>
<head>
<title>Widget Holder</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
</style>
</head>

<body>
    <form runat="server">
    <div id="holder"></div>
    </form>
    <script type="text/javascript">
        $().ready(function () {
            $.get("http://finance.google.com/finance/info?client=ig&q=NASDAQ:GOOG", function (data) {
                debugger;
                $("#holder").html(data);
            });
        });
    </script>


</body>
</html>

但还是会出现这个错误

跨域请求被阻止:同源策略不允许读取位于http://finance.google.com/finance/info?client=ig&q=NASDAQ:GOOG 的远程资源。 (原因:CORS 标头“Access-Control-Allow-Origin”缺失)。

【问题讨论】:

  • // [ {“id”:“304466804484872”,“t”:“GOOG”,“e”:“纳斯达克”,“l”:“539.79” ,"l_fix" : "539.79" ,"l_cur" : "539.79" ,"s": "2" ,"ltt":"美国东部夏令时间下午 5:04" ,"lt" : "美国东部夏令时间 5 月 27 日下午 5:04" , “lt_dts”:“2015-05-27T17:04:30Z”,“c”:“+7.47”,“c_fix”:“7.47”,“cp”:“1.40”,“cp_fix”:“1.40”, ccol":"chg","pcls_fix":"532.32","el":"537.01","el_fix":"537.01","el_cur":"537.01","elt":"5 月 27 日下午 6:40美国东部时间”,“ec”:“-2.78”,“ec_fix”:“-2.78”,“ecp”:“-0.52”,“ecp_fix”:“-0.52”,“eccol”:“chr”,“div” : "" ,"yld" : "" } ] 这是一个有效的json吗?
  • 什么会使它无效? //?
  • 但它附加了//。这可能是造成问题的原因吗?
  • 如果 JSON 无效,还有其他方法可以读取此提要吗?
  • 请看下面我的答案。浏览器正在加载json

标签: json cors


【解决方案1】:

我设法使用 PHP 代理来获取数据来解决这个问题。我使用的代理可以在这里找到http://benalman.com/code/projects/php-simple-proxy/examples/simple/

感谢您在此主题上提供的所有帮助。

【讨论】:

    【解决方案2】:

    脚本:

    $().ready(function () {
                $.get("http://finance.google.com/finance/info?client=ig&q=NASDAQ:GOOG", function (data) {
                    debugger;
                    $("#holder").html(data);
                });
            });
    

    html:

    <form runat="server">
        <div id="holder"></div>
        </form>
    

    为我工作。

    【讨论】:

    • @Antony - 有帮助吗?
    猜你喜欢
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 2014-01-29
    • 2015-09-18
    相关资源
    最近更新 更多