拒绝从“*”执行脚本,因为它的 MIME 类型('text/HTML')不可执行

Posted

技术标签:

【中文标题】拒绝从“*”执行脚本,因为它的 MIME 类型(\'text/HTML\')不可执行【英文标题】:Refused to execute script from "*" because its MIME type ('text/HTML') is not executable拒绝从“*”执行脚本,因为它的 MIME 类型('text/HTML')不可执行 【发布时间】:2014-12-31 05:00:04 【问题描述】:

我正在根据 Google 表格中定义的位置在 Google 地图上绘制一些标记。

对于一个 Google 工作表,标记已绘制,但如果我复制此工作表并启动我的网页,则会收到以下消息错误:

拒绝执行来自 'https://script.google.com/a/macros/MYDOMAIN/s/My-Script-ID/exec?Jsonp=callback' 的脚本,因为它的 MIME 类型 ('text/html') 不可执行,并且启用了严格的 MIME 类型检查。

这是我的带有一些 javascript 代码的 HTML 页面。

//.. my html code

    <script type=application/javascript>
    var DATA_SERVICE_URL ="https://script.google.com/a/macros/MYDOMAIN/s/MYSCRIPTID/exec?jsonp=callback"; // THIS ONE WORKS

    //var DATA_SERVICE_URL_COPY = "https://script.google.com/a/macros/MYDOMAIN/s/MYSCRIPTID/exec?jsonp=callback"; // **THIS ONE IS NOT WORKING** (it is linked to the copy of my working google sheet above)

    //....

var scriptElement = document.createElement('script');
scriptElement.src = DATA_SERVICE_URL; 
document.body.appendChild(scriptElement);
document.getElementsByTagName('head')[0].appendChild(scriptElement);

    function callback(data) 

    alert("Here am I");

    //.. Plotting markers on map

    

    </script>

当我使用 DATA_SERVICE_URL_COPY 而不是 DATA_SERVICE_URL 时,我收到消息错误。但是两个 Google 表格都已发布,具有相同的选项。

以下是我在两个 Google 表格中使用的 Google Apps 脚本。

var SPREADSHEET_ID = 'MY SPREADSHEET ID';
var SHEET_NAME = 'MAP';
//------------------------------------------------------------------------------

function doGet(request)
  var callback = request.parameters.jsonp;
  var range = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(SHEET_NAME).getDataRange();
  var json = callback + '(' + Utilities.jsonStringify(range.getValues()) + ')' ;


  return ContentService.createTextOutput(json).setMimeType(ContentService.MimeType.JAVASCRIPT);


//------------------------------------------------------------------------------

function testDoGet() 

  var request = parameters: jsonp: 'callback';
  var results = doGet(request);

  Logger.log(results.getContent());

我猜问题出在 Google 表格上,但我不知道具体在哪里?

有人知道吗?

【问题讨论】:

迟到了.. 但我认为问题出在 Google Drive 的 MIME 类型上,因此它将所有文档都视为文本/html。 【参考方案1】:

也许这就是问题所在。

(line:15) Uncaught SyntaxError: Unexpected token

改变 &lt;script type=application/javascript&gt;&lt;script type="application/javascript"&gt;

【讨论】:

以上是关于拒绝从“*”执行脚本,因为它的 MIME 类型('text/HTML')不可执行的主要内容,如果未能解决你的问题,请参考以下文章

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

拒绝从 'url' 执行脚本,因为它的 MIME 类型('application/json')不可执行

拒绝从 'URL' 执行脚本,因为它的 MIME 类型 ('text/html') 不可执行,并且启用了严格的 MIME 类型检查

拒绝从 'file_name.php' 执行脚本,因为它的 MIME 类型 ('text/html') 不可执行,并且启用了严格的 MIME 类型检查

拒绝执行脚本,因为它的 MIME 类型 ('text/html') 不可执行,并且启用了严格的 MIME 类型检查

拒绝执行脚本,因为它的 MIME 类型 ('text/html') 不可执行并且启用了严格的 MIME 类型检查