T355/MYHtml/ch08/demo/demo17.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome-untrusted, https, edge.
test.html:10
GET file:///D:/T355/MYHtml/ch08/demo/demo17.js net::ERR_FAILED
根據錯誤訊息:
Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome-untrusted, https, edge.
.
使用外部的 javascript 只接受 "http, data, isolated-app, chrome-extension, chrome-untrusted, https, edge."
使用 file:// 不行。
可以安裝 web server ,並且使用 http://localhost/
解决方案:
针对导入Html文件时的CORS policy错误,可以通过以下几种方法解决。
方法一:在本地搭建一个服务器
在本地搭建一个服务器,例如使用Node.js的http-server模块,然后将Html文件放置在该服务器上,通过服务器访问Html文件即可,这样可以避免CORS policy的限制。
步骤如下:
1.安装http-server模块
在命令行中输入以下命令:
npm install http-server -g
2.启动http-server服务器
在命令行中进入Html文件所在的目录,然后输入以下命令:
http-server . -c-1
-c-1参数表示禁用缓存,如果不加该参数,可能会出现问题。
3.通过服务器访问Html文件
在浏览器中输入以下地址:
http://localhost:8080/xxx.html
其中xxx.html为Html文件名。
方法二:修改服务器返回的响应头
在服务器端返回Content-Type头部字段的值为”text/html”即可解决该问题。
在Node.js中可以使用以下代码实现:
res.writeHead(200, {
'Content-Type': 'text/html',
'Access-Control-Allow-Origin': '*'
})
其中Access-Control-Allow-Origin头部字段设置为”*”表示允许所有跨域请求。
方法三:使用webpack-dev-server
使用webpack-dev-server启动一个本地服务器,webpack-dev-server会自动处理CORS问题。
需要安装webpack和webpack-dev-server两个模块,可以通过以下命令安装:
npm install webpack webpack-dev-server -g
然后在webpack配置文件中添加以下配置:
devServer: {
host: '0.0.0.0',
port: 8080,
disableHostCheck: true
}
其中host设置为”0.0.0.0”,表示允许所有IP访问,disableHostCheck设置为true表示禁用主机检查。
启动webpack-dev-server服务器:
webpack-dev-server --open
使用以上任意一种方法解决问题即可。
问题可以换成:盘符和静态服务器打开html的区别
盘符是指计算机硬盘上的一个存储区域,可以存储各种文件,包括HTML文件。而静态服务器是指专门用于存储和提供静态文件(如HTML、CSS、JavaScript等)的服务器,它可以通过HTTP协议向客户端提供这些文件。
在打开HTML文件时,如果直接从盘符中打开,那么浏览器会直接读取硬盘上的文件并在浏览器中显示。而如果使用静态服务器来提供HTML文件,则需要通过HTTP协议进行访问,浏览器会向服务器发送请求,服务器会返回HTML文件的内容,浏览器再将其解析并显示出来。
使用静态服务器可以提供更好的性能和可靠性,因为它可以缓存文件并使用CDN等技术来提高文件的传输速度和可用性。同时,静态服务器还可以提供一些其他的功能,如压缩文件、防盗链等。
你可以使用