【发布时间】:2018-01-03 00:59:26
【问题描述】:
您好,我目前正在编写一个脚本,该脚本必须从返回 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 之前是否有
jQuery321030035432758818903_1501098778362(? -
"Content-Type": "application/javascript; charset=utf-8"— 这毫无意义。您正在发出 GET 请求。没有描述内容类型的请求正文。 -
"Access-Control-Allow-Origin" : "*"— 这毫无意义。 Access-Control-Allow-Origin 是 response 标头,而不是请求标头。 -
@yuriy636 是的,请查看我刚刚包含的问题末尾的链接。
-
@Colpachi 不是 JSONP,服务器正在响应 JSON,这就是 MIME 不匹配的原因。
标签: javascript json ajax