有没有办法在Chrome中停用var myElement = this.shadowRoot.querySelector('#myElement');
var div = myElement.shadowRoot.querySelector('div');
。
实际上我正在跨域提出JSONP请求。它在Firefox上运行良好但是,使用chrome时它在控制台中给出了一些错误。
拒绝执行来自' https://example.com'的脚本因为它的MIME类型(' text / plain')不可执行,并且启用了严格的MIME类型检查。
它在Mozilla中完美运行..问题仅出现在chrome中
以下是请求的响应标题..
strict MIME type checking
解决方法我认为:
将内容类型外部设置为Cache-Control:no-cache, no-store
Connection:Keep-Alive
Content-Length:29303
Content-Type:text/plain;charset=ISO-8859-1
Date: xxxx
Expires:-1
Keep-Alive:timeout=5
max-age:Thu, 01 Jan 1970 00:00:00 GMT
pragma:no-cache
Set-Cookie:xxxx
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options:nosniff
X-Frame-Options:SAMEORIGIN
答案 0 :(得分:9)
服务器应该使用JSONP application/javascript
的正确MIME类型进行响应,并且您的请求应告诉jQuery您正在加载JSONP dataType: 'jsonp'
有关详细信息,请参阅this answer!
您也可以have a look a this one解释为什么加载.js
text/plain
文件无效。
答案 1 :(得分:4)
就我而言,我在X-Content-Type-Options
上关闭nginx
然后工作正常。但请确保这会略微降低您的安全级别。将暂时解决。
# Not work
add_header X-Content-Type-Options nosniff;
# OK (comment out)
#add_header X-Content-Type-Options nosniff;
apache会是一样的。
<IfModule mod_headers.c>
#Header set X-Content-Type-Options nosniff
</IfModule>
答案 2 :(得分:0)
也有同样的问题,
如果您无法解决问题,可以在命令行上运行以下命令
chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security
注意:您必须导航到chrome的安装路径
例如:cd C:\Program Files\Google\Chrome\Application
将打开开发人员会话Chrome浏览器,您现在可以在新的Chrome浏览器上启动您的应用 我希望这应该有用
答案 3 :(得分:0)
对于Windows用户:
如果您的自托管服务器(例如:您的自定义CDN)上发生此问题,并且浏览器(Chrome)在尝试加载javascript文件时显示类似... ('text/plain') is not executable ...
之类的字词...
这是您需要做的:
Win + R > regedit
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.js
application/javascript
application/javascript
,然后重试答案 4 :(得分:0)
如果您使用的是 node.js(带有Express)
如果要在node.js中提供静态文件,则需要使用一个函数。将以下代码添加到您的js文件中:
app.use(express.static("public"));
应用程序在哪里:
const express = require("express");
const app = express();
然后在项目文件夹中创建一个名为public的文件夹。 (您可以将其称为其他名称,这只是一个好习惯,但请记住也要从函数中进行更改。)
然后在此文件中创建另一个名为css的文件夹(如果要提供静态图像,也可以在css下创建图像文件。),然后将css文件添加到该文件夹中。
添加它们后,请相应地更改样式表。例如,如果它是:
href="cssFileName.css"
和
src="imgName.png"
制作它们:
href="css/cssFileName.css"
src="css/images/imgName.png"
那应该起作用??
答案 5 :(得分:-2)
我在php
文件的var.js
内使用.htaccess
。
<Files var.js>
AddType application/x-httpd-php .js
</Files>
然后我在.js文件中编写php代码
<?php
// This is a `.js` file but works with php
echo "var js_variable = '$php_variable';";
当我在Chrome上收到MIME类型警告时,我通过在Content-Type
文件中添加.js(but php)
标题行来修复它。
<?php
header('Content-Type: application/javascript'); // <- Add this line
// This is a `.js` file but works with php
...
浏览器无法执行.js
文件,因为apache会将Content-Type
文件的application/x-httpd-php
标头发送为.htaccess
中定义的htaccess
。这是一个安全原因。但是,只要Content-Type
命令模仿,apache就不会执行php,这是必要的。因此我们需要使用php函数header()
覆盖apache的LSD.test
标头。我想apache会在php发送它而不是apache之前停止发送自己的头文件。