返回信息流打包后引用文件路径已加.,
路由模式为hash
浏览器打开index白屏,报错:
Access to script at 'file:///D:/projects/vue/dist/assets/vendor.091b9cca.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome-extension, edge, https, chrome-untrusted.
网上查的解决方案大抵是起服务或Nginx代理
请问本地静态文件为什么要起服务?有没有办法不起服务直接打开?
这是一条镜像帖。来源:北邮人论坛 / java-script / #5943同步于 2021/9/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖
【求助】vite vue打包问题
yah2015
2021/9/8镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
从今往后的所有现代浏览器的策略大多都是不对file url scheme实现任何粒度的同源策略,若想使用仅能作为单文件使用,比如用作浏览器内置PDF阅读器的协议。
究其原因就在于互联网的早期很长一段时间用户都将网站当作独立的文档看待,从互联网上离线网页以脱机访问是十分常见的现象,且并不会出现安全隐患。而当JavaScript出现后事情就不一样了。早期的浏览器比如IE和Edge会将网站内容划分为五个安全层次,其中分为Intranet和Internet。Intranet能够访问本地内容,Internet则不行。
这种机制在在线浏览十分合理有效,但一旦用户离线了某个网页,这个网页的所有内容都会在这个机制下被认作Intranet,这样一来黑客所需要做的只是利用社会工程学诱骗用户去离线一个网页,并等待其再次打开这个网页,而就像上面所说的,由于普通人往往将HTML当作是一个静态的文档,和docx无异,这样的思维误区使得普通人对html的警惕性远远没有exe高。当用户去访问了这个他觉得很安全的本地静态网页,实际上很有可能的是系统里所有的文件都暴露了。当然了这个属于Web的原始形态,但即使浏览器对本地行为进行了管控,仍然有很多基于打印机共享和设备发现的用户攻击。
火狐率先发现了个问题,选择的解决方案是对file url scheme实现基于同目录的同源策略,即同一目录的本地文件能够互访。这个实现很快就被Chromium等浏览器复制过去。但这种方式仍然有很大的风险,万一有一个用户离线了网站,然后在那个文件夹里面保存了一个包含他所有密码的文件,那这个文件仍然能够被黑客获取。
现在Chromium的选择就和一开始提到的一样,不对file url scheme实现任何形式的同源策略,本地文件什么都不能访问。事实上,本来W3C就没有对file url scheme的同源策略实现做出任何规定的,它允许火狐一开始的行为,并赞许禁止一切访问的行为。那既然这个是实现相关的,不可能用于开发,更不可能用于生产。除了看PDF的时候,就当这个协议不存在就行。
再者说你作为开发,应该有设置开发环境的觉悟吧?静态文件服务器也不是很难找,开发的时候也没必要上Nginx,有Python就能起一个静态服务,Nodejs也能一个文件就能起一个静态服务。
---
其实上面对file url scheme同源策略的描述是不准确的,据我所知浏览器扩展是可以设置有限程度的同源策略的。