You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gitlab Pages下Angular项目JSON翻译文件CORS错误及302重定向问题

解决GitLab Pages部署Angular多语言项目的CORS与重定向问题

问题背景

我的Angular项目通过src/assets/i18n下的JSON文件实现多语言翻译,部署到GitLab Pages后出现以下错误:

从源站'https://lorenzoname.gitlab.io'访问被重定向至'https://gitlab.com/oauth/authorize?xxx'的XMLHttpRequest请求,被CORS策略阻止:请求的资源上不存在'Access-Control-Allow-Origin'头。

同时伴随302状态码提示:

状态码:302 => 因请求被重定向,无可用内容。

后续触发两次重定向请求:

请求URL:https://projects.gitlab.io/auth?domain=https://lorenzoname.gitlab.io&state=xxx
请求方法:GET
状态码:302
引用策略:strict-origin-when-cross-origin

请求URL:https://gitlab.com/oauth/authorize?client_id=xxx&redirect_uri=https://projects.gitlab.io/auth&response_type=code&state=xxx&scope=api
请求方法:GET
状态码:302
引用策略:strict-origin-when-cross-origin

GitLab CI任务输出:
gitlab-ci输出

问题根源

这一系列错误的核心是:翻译文件的请求未命中GitLab Pages上的静态资源,而是被强制重定向到GitLab的OAuth认证流程。通常由项目权限设置为私有、Angular资源配置错误、GitLab CI构建路径不匹配导致。

解决步骤

1. 调整GitLab Pages访问权限

  • 进入项目「Settings」→「Pages」页面
  • 在「Access control」区域,将权限设置为Public
  • 私有项目的GitLab Pages会要求用户登录,未授权的静态资源请求会被重定向到OAuth页面,这是触发CORS错误的直接原因

2. 验证Angular资源配置

确保angular.json中assets配置包含src/assets,保证构建时i18n文件被复制到产物目录:

"architect": {
  "build": {
    "options": {
      "assets": [
        "src/favicon.ico",
        "src/assets"
      ],
      // 其他构建配置
    }
  }
}

3. 修正i18n文件加载路径

加载多语言文件时使用相对路径,避免绝对路径拼写错误:

// 正确示例
this.http.get('./assets/i18n/en.json').subscribe(...);

4. 检查GitLab CI部署配置

确保构建产物输出到GitLab Pages要求的public目录,示例gitlab-ci.yml配置:

pages:
  stage: deploy
  image: node:18-alpine
  script:
    - npm install
    - ng build --configuration production --output-path public
  artifacts:
    paths:
      - public
  only:
    - main

如果你的构建命令输出目录不是public,必须调整为该目录,否则GitLab Pages无法找到静态资源,会返回404并触发重定向。

5. 本地验证构建产物

执行本地构建命令ng build --configuration production,检查产物目录(默认dist)下是否存在assets/i18n文件夹及对应的JSON文件,确认文件未丢失。

内容的提问来源于stack exchange,提问作者Lorenzo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 16:52:49