App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure.

App Transport Security导致无法加载不安全的HTTP资源。为解决此问题,可以通过Info.plist文件配置临时例外,允许任意加载。具体设置如下: <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>

pp Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file. 原因及解决方法


1.原因是xcode的安全协议不支持http只支持https的安全模式
2.解决方法 在工程文件的info.plist右击——>open as ——> source code 在<dict>下面添加

 <key>NSAppTransportSecurity</key>

    <dict>

        <key>NSAllowsArbitraryLoads</key>

        <true/>

    </dict>

然后就可以打开一半url了。
<think>我们正在解决Vue项目打包后打开dist/index.html时出现的两个问题: 1. 资源加载失败(chunk-vendors.js, app.js, app.css等) 2. Tracking Prevention blocked access to storage(跟踪预防阻止访问存储) 根据引用内容,我们可以分析问题并给出解决方案。 问题1:资源加载失败 原因:在Vue项目中,默认的打包配置是将所有资源路径设置为绝对路径(以'/'开头),这样在本地直接打开index.html文件时,浏览器会试图从文件系统的根目录去寻找这些资源,而实际上资源是在dist目录下,因此会导致加载失败。 解决方案:修改Vue项目的配置,将资源路径改为相对路径。 具体步骤: 1. 在项目的根目录下,找到`vue.config.js`文件(如果没有则新建一个)。 2. 在其中添加以下配置: ```javascript module.exports = { publicPath: './', // 使用相对路径 // 其他配置... } ``` 这样打包后的index.html中引用资源的路径就会变成相对路径(例如:`./js/app.js`),从而在本地直接打开时能够正确加载。 另外,如果项目使用了vue-cli 3.x以上版本,也可以直接在package.json文件中指定publicPath,但通常推荐使用vue.config.js。 问题2:Tracking Prevention blocked access to storage 原因:这是浏览器(特别是Microsoft Edge)的一种安全机制,当从本地文件系统打开HTML文件时,浏览器可能会阻止页面访问localStorage或sessionStorage,以防止跟踪。 解决方案:由于这个问题主要是由浏览器安全策略引起的,所以我们无法直接通过代码完全避免。但是,我们可以采取以下措施: - 在本地测试时,建议使用HTTP服务器来运行打包后的dist目录,而不是直接打开index.html文件。因为通过HTTP服务(如localhost)访问,浏览器不会触发这种安全策略。 - 可以使用简单的HTTP服务器,例如使用Node.js的http-server、或者Python的SimpleHTTPServer等。 使用http-server的步骤: 1. 安装http-server(如果未安装): ```bash npm install -g http-server ``` 2. 在dist目录下运行: ```bash http-server -p 8080 ``` 3. 然后在浏览器中访问:http://localhost:8080 或者使用Vue CLI自带的serve命令(需要全局安装): ```bash serve -s dist ``` 另外,如果项目中有使用到localStorage或sessionStorage,确保在访问之前检查其可用性,避免在不可用的情况下使用。例如: ```javascript if (typeof(Storage) !== 'undefined') { // 使用localStorage或sessionStorage } else { // 提示或者使用其他方式 } ``` 但是,请注意,即使做了这样的检查,在本地文件系统中直接打开时,浏览器仍然可能阻止访问,所以最好的办法还是通过HTTP服务器来运行。 总结: 1. 修改publicPath为相对路径解决资源加载失败。 2. 使用HTTP服务器运行dist目录以避免跟踪预防阻止访问存储的问题。 如果按照上述步骤操作后,资源加载问题应该解决,而存储访问问题则通过本地服务器运行可以避免。 注意:如果项目中有路由使用history模式,那么在打包后直接打开文件也可能会有路由问题,此时同样需要服务器支持。如果使用hash模式则不会有这个问题。但这里主要解决的是资源加载和存储访问问题。 另外,根据引用[2]和[4]的内容,如果项目中有使用外部库(如AgoraRTC)或者需要处理跨域问题,在开发环境中可以通过配置代理解决,但在打包后,这些配置不再起作用,所以生产环境的跨域问题需要在服务器端解决(例如Nginx配置)。不过,这里的问题主要是本地打开dist文件,所以跨域问题可能不会在此场景出现。 如果问题仍然存在,请检查打包后的dist目录结构,确保资源文件确实存在于相应的路径。 最后,生成相关问题: §§相关问题§§ 1. 如何配置Vue项目的publicPath为相对路径? 2. 有哪些简单的方法可以本地运行打包后的dist目录? 3. 在Vue项目中,如何避免浏览器安全策略导致的存储访问问题? 4. Vue项目打包后路由出现404问题如何解决? </think>### 解决Vue打包后资源加载失败和存储访问问题 #### **问题分析** 1. **资源加载失败**(chunk-vendors.js/app.js/app.css) - 根本原因:Vue打包后默认使用绝对路径引用资源(如`/js/app.js`),但直接打开本地`index.html`时,浏览器会尝试从根目录加载资源。 - 引用依据: > "整个项目是一个主文件index.html...通过组件嵌套引用其他单文件组件"[^1] 2. **Tracking Prevention blocked storage访问** - 浏览器安全策略(如Edge/Chrome)阻止本地HTML文件访问`localStorage/sessionStorage`。 - 常见于直接打开本地文件(`file://`协议)。 --- #### **解决方案**(分步操作) ##### ✅ 步骤1:修复资源路径(核心) 修改Vue项目的**publicPath**为相对路径: 1. 打开项目根目录的`vue.config.js`(若无则新建) 2. 添加配置: ```javascript module.exports = { publicPath: './', // 关键!改为相对路径 productionSourceMap: false // 可选,减小打包体积 } ``` 3. 重新打包: ```bash npm run build ``` - 效果:打包后`index.html`中的资源路径变为`./js/app.js`,可本地直接加载。 ##### ✅ 步骤2:绕过存储访问限制 方案A:使用本地HTTP服务器(推荐) ```bash # 安装serve(Vue官方推荐) npm install -g serve # 在dist目录启动服务 serve -s dist ``` 访问`http://localhost:3000` 而非直接打开文件。 方案B:修改浏览器策略(临时测试) - **Chrome**:启动时添加参数 `chrome.exe --disable-web-security --user-data-dir="C:\Temp"` - **Edge**:地址栏输入`edge://flags/#block-insecure-private-network-requests` → 设为**Disabled** --- #### **补充优化** 1. **路由模式问题**(若使用Vue Router) ```javascript const router = new VueRouter({ mode: 'hash', // 改为hash模式,避免本地打开404 routes: [...] }) ``` 2. **外部资源处理**(如CDN) - 参考引用[2],在`webpack`中配置`externals`: ```javascript // vue.config.js configureWebpack: { externals: process.env.NODE_ENV === 'production' ? { 'vue': 'Vue', 'vue-router': 'VueRouter' } : {} } ``` - 在`public/index.html`中手动添加CDN链接。 3. **跨域问题**(若需请求API) - 开发环境:参考引用[4]配置`proxyTable`[^4] - 生产环境:需后端配置CORS或Nginx代理 --- #### **验证结果** 1. 打包后`dist/index.html`资源路径应为相对路径: ```html <!-- 正确示例 --> <script src="./js/chunk-vendors.js"></script> ``` 2. 通过`http://localhost:3000`访问页面,控制台无资源错误和存储拦截提示。 > **关键点总结**:相对路径`publicPath: './'` + 本地HTTP服务是解决此类问题的标准方案[^1][^2][^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值