gpt4 book ai didi

javascript - 如何正确可靠地跨站加载JSON数据?

转载 作者:行者123 更新时间:2023-11-28 20:42:01 24 4
gpt4 key购买 nike

我目前正在开发 Chrome 的用户脚本/扩展程序,并尝试从“某个网站”提取一些 JSON 数据。这是我的方法:

$.get( "http://cloud.hartwig-at.de/~oliver/superuser.json", 
function( data ) { console.log( data ); }
);

当然,这会导致以下错误:

XMLHttpRequest cannot load http://cloud.hartwig-at.de/~oliver/superuser.json. Origin http://superuser.com is not allowed by Access-Control-Allow-Origin.

阅读 Origin 'url' is not allowed by Access-Control-Allow-Origin 后我能够解决这个问题(以及其他问题)。所以,这是下一个版本:

$.get( "http://cloud.hartwig-at.de/~oliver/superuser.json", 
function( data ) { console.log( data ); },
"jsonp"
);

遗憾的是,这会导致另一个错误:

Uncaught SyntaxError: Unexpected token : (superuser.json:2)

还有一个警告告诉我“资源解释为脚本,但使用 MIME 类型文本/纯文本传输:”,这已经让我知道问题可能是什么。 (更多详细信息通过 Chrome says "Resource interpreted as script but transferred with MIME type text/plain.", what gives? 提供)

显然,the HTTP server has to send the proper MIME type对于我的文件,这将是 application/json .

好的,所以我赶紧添加了the required change到我的 mime.types 并进行另一次尝试。但是,没有骰子!警告消失了,错误却没有消失。我仍然收到 Uncaught SyntaxError: Unexpected token :。 (我之前也尝试过使用 mimeType parameter 来解决这个问题,结果是一样的。)

MIME 类型看起来不错:
enter image description here

现在我有点没主意了。 .json 文件的内容在 http://www.jslint.com/ 上验证良好。

最佳答案

告诉 jQuery 执行 JSONP 并不能神奇地让它工作。它使 JSONP request ,但另一端的服务器需要支持JSONP调用。

服务器的响应应该类似于

someFunction( { "foo" : "bar" } );

参见jQuery's docs on getJSON配合JSONP看看如何使用回调

如果是现代浏览器,您可以使用 CORS并且您可以控制第二个域。

其他选项是您的域上的服务器端代理,它从其他域请求数据。或者您可以使用类似 Yahoo pipes 的服务。

关于javascript - 如何正确可靠地跨站加载JSON数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14222663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com