您的位置:首页 > 教育 > 锐评 > 系统开发的一般过程_2023b站推广大全_发布外链的步骤_企业建站模板

系统开发的一般过程_2023b站推广大全_发布外链的步骤_企业建站模板

2025/6/19 22:41:12 来源:https://blog.csdn.net/weixin_46996561/article/details/147542583  浏览:    关键词:系统开发的一般过程_2023b站推广大全_发布外链的步骤_企业建站模板
系统开发的一般过程_2023b站推广大全_发布外链的步骤_企业建站模板

1. 说明

此配置用于控制 Webpack 动态加载的代码块(chunk)(例如代码分割或懒加载的模块)在跨域(不同域名)加载时的行为。它通过为动态生成的 <script>标签添加 crossorigin 属性,确保符合跨域资源共享(CORS)的安全策略

可选值

  • false(默认值)😗
    不添加 crossorigin 属性到动态加载的 <script> 标签。
    适用场景:资源与主应用同域(无跨域需求)
  • anonymous:
    为 <script> 标签添加 crossorigin=“anonymous” 属性。
    请求行为:不携带凭据(如 Cookies、HTTP 认证信息)。
    服务器要求:响应头需包含 Access-Control-Allow-Origin: * 或明确允许请求的来源域名。
  • use-credentials:
    为 <script> 标签添加 crossorigin=“use-credentials” 属性。
    请求行为:携带凭据(如 Cookies、HTTP 认证信息)
    服务器要求:响应头需满足:
    Access-Control-Allow-Origin: <具体来源域名>(不能为 *)
    Access-Control-Allow-Credentials: true

2. 使用场景

具体使用场景示例:主应用与 CDN 跨域加载静态资源
场景描述

  • 主应用:部署在 https://my-app.com
  • 静态资源(Webpack 打包后的 JS/CSS 文件)托管在 CDN:https://cdn.my-app.com。
  • 问题:

当浏览器加载 CDN 上的 JS 文件时,控制台报错:
Access to script at ‘https://cdn.my-app.com/main.js’ from origin ‘https://my-app.com’
has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present.

解决方案

  1. Webpack 配置

在 webpack.config.js 中启用跨域加载策略:
module.exports = {
output: {
publicPath: “https://cdn.my-app.com/”, // 资源托管在 CDN
crossOriginLoading: “anonymous”, // 添加 crossorigin=“anonymous”
},
};

  1. Webpack 会为动态加载的 <script> 标签添加 crossorigin=“anonymous” 属性

<script src=“https://cdn.my-app.com/main.js” crossorigin=“anonymous”></script>

  1. CDN/服务器配置
    3.1 在 CDN(如 AWS S3、阿里云 OSS)或 Nginx 服务器中配置 CORS 响应头

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET

3.2(若使用 use-credentials,需指定具体域名并开启 Access-Control-Allow-Credentials: true)

3. 验证效果

  1. 浏览器 Network 面板
  • 检查 JS 文件的请求头:

Origin: https://my-app.com

  • 检查响应头:

Access-Control-Allow-Origin: *

  1. 错误信息捕获
  • 启用 crossOriginLoading 后,通过 window.onerror 可捕获更详细的跨域脚本错误:

window.onerror = function (message, source, lineno, colno, error) {
console.log(“脚本错误详情:”, error);
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com