首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript -拒绝从URL执行脚本,因为其MIME类型('application/json')不可执行,并且启用了严格的MIME类型检查

Javascript -拒绝从URL执行脚本,因为其MIME类型('application/json')不可执行,并且启用了严格的MIME类型检查
EN

Stack Overflow用户
提问于 2018-06-11 05:05:23
回答 1查看 635关注 0票数 1

当我从索引中调用JavaScript文件时,我遇到了这个问题。这是我的JavaScript文件(jQuery):

代码语言:javascript
复制
$(document).ready(function(){
  $.getJSON("https://api.blockchain.info/pools?timespan=5days&callback=?", function(result){

  });

});

这是我尝试从API获取json文件时得到的错误:

代码语言:javascript
复制
Refused to execute script from 'https://api.blockchain.info/pools?
timespan=5days&callback=jQuery33105603115327243822_1528663793253&_=1528663793254
' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled.

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2018-06-11 05:37:05

您正在尝试使用一种称为JSON-P的老套方法来绕过跨域限制。

基本上,这是通过将一个<script>元素注入到具有指定URL的页面中来实现的。在全局空间中设置一个带有自动生成的名称(由jQuery生成)的回调。服务器在查询字符串中看到这个callback=someCallback参数,它返回的不是JSON,而是JavaScript,如下所示:

代码语言:javascript
复制
someCallback(...data...);

然后,浏览器像执行其他脚本一样执行此脚本,使用结果数据调用回调,一切正常。

除了返回的数据之外,几乎每个HTTP响应都有一些头部。其中之一是Content-Type,它向浏览器表明它正在获取哪种类型的数据,以便它知道如何处理这些数据。可执行JavaScript的Content-Type (通常称为MIME类型)通常为application/javascript。正如错误消息所说,application/json是不可执行的。

问题是两件事中的一件:

JSON API不支持JSON-p。(而且,它也不应该支持JSON-p!CORS现在得到了很好的支持,不需要JSON-P。)试着删除那个callback参数,看看会发生什么。根据我所看到的响应,这就是问题所在。

  • 该应用程序接口支持Content-Type -P,但在其响应头中返回了错误的JSON值。(如果这是您的问题,那么除了代理响应之外,您将无能为力。但这不是您的问题所在。)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50788037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档