您好,我目前正在编写一个脚本,该脚本必须从返回 json 文件的第三方提要中提取信息。我无法使用 CORS,因为我没有服务器访问权限,因此根据案头研究,我被告知使用 JSONP。我可以在 chrome 网络选项卡中看到回调(响应),但无法读取 chrome 日志中的文件。重点是,当我执行以下代码时,我收到以下错误消息。我无法关闭 mime 类型检查。我试图查看其他问题,但找不到类似的内容。 应该做什么?
“拒绝执行来自‘https://siteurl.com/json=jsonp&callback=jQuery321030035432758818903_1501098778362&_=1501098778363’的脚本,因为其MIME类型(‘application/json’)不可执行,并且启用了严格的MIME类型检查。”
<script src="jquery.js"></script>
<script>
$.ajax({
type: 'GET',
url: 'siteurl.com/json?callback=jsonp',
dataType: 'jsonp',
xhrFields: {
withCredentials: false
},
headers: {
"Accept" : "application/json; charset=utf-8",
"Content-Type": "application/javascript; charset=utf-8",
"Access-Control-Allow-Origin" : "*"
},
success: function (result) {
console.log(result);
},
error: function (xhr, errorText) {
console.log('Error ' + xhr.responseText);
}
});
</script>
看看网络选项卡:
最佳答案
JSONP 不是 JSON! JSONP 是一种 JavaScript 程序,由带有一个参数的函数调用组成。
正确的内容类型是application/javascript
。
I am not able to use CORS since I do not have server access, so based on desk research I was informed to use JSONP.
如果站点提供 JSONP,则只能使用 JSONP。 (现在他们应该使用 CORS,它在各方面都更好)。仅在查询字符串中添加 callback
不会神奇地强制站点提供 JSONP 并为您破坏同源策略。该网站必须明确地将数据公开给其他网站。
关于javascript - JSONP 脚本返回 MIME 类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45348384/