Javascript JSONP脚本返回MIME类型错误

Javascript JSONP脚本返回MIME类型错误,javascript,json,ajax,Javascript,Json,Ajax,您好,我目前正在编写一个脚本,该脚本必须从返回json文件的第三方提要提取信息。我不能使用CORS,因为我没有服务器访问权限,所以根据桌面研究,我被告知使用JSONP。我可以在chrome网络的选项卡中看到回调(响应),但无法读取chrome日志中的文件。关键是,当我执行下面的代码时,我会得到下面的错误消息。我无法关闭mime类型检查。我试着看一下其他问题,但找不到类似的问题。 应该怎么做 拒绝从“”执行脚本,因为其MIME类型(“应用程序/json”)不可执行,并且启用了严格的MIME类型检查

您好,我目前正在编写一个脚本,该脚本必须从返回json文件的第三方提要提取信息。我不能使用CORS,因为我没有服务器访问权限,所以根据桌面研究,我被告知使用JSONP。我可以在chrome网络的选项卡中看到回调(响应),但无法读取chrome日志中的文件。关键是,当我执行下面的代码时,我会得到下面的错误消息。我无法关闭mime类型检查。我试着看一下其他问题,但找不到类似的问题。 应该怎么做

拒绝从“”执行脚本,因为其MIME类型(“应用程序/json”)不可执行,并且启用了严格的MIME类型检查


$.ajax({
键入:“GET”,
url:'siteurl.com/json?callback=jsonp',
数据类型:“jsonp”,
xhrFields:{
withCredentials:false
},
标题:{
“接受”:“应用程序/json;字符集=utf-8”,
“内容类型”:“应用程序/javascript;字符集=utf-8”,
“访问控制允许来源”:“*”
},
成功:功能(结果){
控制台日志(结果);
},
错误:函数(xhr,errorText){
console.log('Error'+xhr.responseText);
}
}); 
请查看“网络”选项卡:


JSONP不是JSON!JSONP是一个JavaScript程序,由一个带有一个参数的函数调用组成

正确的内容类型是
application/javascript


我不能使用CORS,因为我没有服务器访问权限,所以根据桌面研究,我被告知使用JSONP


如果站点提供JSONP,则只能使用JSONP。(现在他们应该改用CORS,它在各个方面都更好)。只需在查询字符串中点击
callback
,将不会神奇地强制站点提供JSONP并为您打破同源策略。该站点必须向其他站点显式公开数据。

这是内容类型的问题

内容类型
application/json
对json是正确的,但对JSONP不是正确的

内容类型
应用程序/javascript
用于JSONP


请检查此项:

您确定服务器支持使用jsonp响应吗?当您预览网络选项卡中的响应时,在实际json之前是否有
jQuery321030035432758818903_1501098778362(
“内容类型”):“application/javascript;charset=utf-8”-这没有意义。您正在发出GET请求。没有请求正文来描述的内容类型。
“访问控制允许源”:*"
-这毫无意义。Access Control Allow Origin是一个响应头,而不是请求头。@yuriy636是的,请查看我刚才包含的问题末尾的链接。@Colpachi这不是JSONP,服务器是用JSON响应的,这就是MIME不匹配的原因。@Ashraf.Shk786-这就是answe的第2行内容r说。我不明白的是,为什么服务器要用JSON文件发送回调?文件已经在brownser中了,只是在控制台中读取而已。@Colpachi-“我不明白的是,为什么服务器要用JSON文件发送回调?”-是吗?您没有显示响应或提供有效的URL。这可能只是一个bug,在这种情况下,问题仍然需要在服务器上解决。@Colpachi-“文件已经在浏览器中,只需在控制台中读取即可。”-具体请参阅本节“为什么同源策略只适用于网页中的JavaScript”@Colpachi-这不是JSONP响应。这是JSON。请参阅此答案的最后一段。恐怕不是因为当我更改为application/JavaScript时,错误消息是相同的:“拒绝从“”执行脚本,因为它的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>