PeaceSheep's blog PeaceSheep's blog
首页
  • 分类
  • 标签
  • 归档
相关链接
提建议&咨询&赞赏
GitHub (opens new window)

PeaceSheep

以最简洁、易懂的话解决问题
首页
  • 分类
  • 标签
  • 归档
相关链接
提建议&咨询&赞赏
GitHub (opens new window)
  • 01 说明
  • 环境安装与配置

  • 常用命令与配置文件

    • Nginx多种配置样例,HTTPS配置与HTTP自动重定向
    • tmux配置文件,解决鼠标不能用等问题
    • ubuntu常用命令
    • Nginx允许特定域名跨域(解决明明200但是仍然CORS错误)
    • apt-get使用代理
  • 常用代码

  • 常用操作
  • 常用命令与配置文件
PeaceSheep
2024-10-17

Nginx允许特定域名跨域(解决明明200但是仍然CORS错误)

使用go写了后端用nginx部署,遇到了各种跨域问题,比如明明请求都200了但还是显示CORS错误,在此记录一下解决方法。

nginx在每个location下面新加以下两个if:

  if ($request_method = 'OPTIONS') {
    add_header 'Access-Control-Allow-Origin' "$http_origin" always;
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
    add_header 'Access-Control-Allow-Credentials' 'true' always;
    add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept' always;
    add_header 'Content-Type' 'text/plain; charset=utf-8';
    add_header 'Content-Length' 0;
    return 204;
}
if ($http_origin ~* (https://peacesheep\.xyz|https://www\.peacesheep\.xyz)) {
    add_header 'Access-Control-Allow-Origin' "$http_origin";
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Credentials' 'true';
    add_header 'Access-Control-Allow-Headers' 'Origin,Content-Type,Accept';
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

第一个if是允许预检请求 (opens new window),如果不加第一个只加第二个,会导致GET请求没问题,但是POST等请求产生CORS错误。

另外,需要注意Access-Control-Allow-Origin只能出现一次。如果nginx添加了,你的后端(例如gin等)又添加了一遍,会出现两个Access-Control-Allow-Origin,此时即便两个一样,并且和你的origin一致,你还是会遇到CORS错误!

编辑 (opens new window)
上次更新: 2025/04/15, 10:52:45
ubuntu常用命令
apt-get使用代理

← ubuntu常用命令 apt-get使用代理→

最近更新
01
ubuntu安装g++显示已有但是输入g++又找不到命令
04-15
02
使用cloudflare-r2搭建webdav
04-08
03
LLM聚合平台客户端对比
03-29
更多文章>
Theme by Vdoing | Copyright © 2022-2025 PeaceSheep
冀ICP备2022004632号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式