Nginx 反向代理跨域问题解决
单域名
前端网站地址:http://xxxx.vip
服务端代理网址:http://api.xxxx.vip
服务端地址:localhost:8085
server { listen 80; server_name api.xxxx.vip; location / { if ($request_method = 'OPTIONS') { add_header Access-Control-Allow-Origin 'http://xxxx.vip'; add_header Access-Control-Allow-Headers 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Requested-With'; add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS'; add_header Access-Control-Allow-Credentials 'true'; # 允许客户端Js读到Content-Disposition 用于文件下载读取文件名 add_header Access-Control-Expose-Headers 'Content-Disposition'; return 204; } if ($request_method != 'OPTIONS') { add_header Access-Control-Allow-Origin 'http://xxxx.vip' always; add_header Access-Control-Allow-Credentials 'true'; } proxy_pass http://localhost:8085; } }
或者
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | server { listen 80; server_name api.xxxx.vip; location / { add_header Access-Control-Allow-Origin 'http://xxxx.vip' always; add_header Access-Control-Allow-Headers 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Requested-With' ; add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS' ; add_header Access-Control-Allow-Credentials 'true' ; # 允许客户端Js读到Content-Disposition 用于文件下载读取文件名 add_header Access-Control-Expose-Headers 'Content-Disposition' ; if ($request_method = 'OPTIONS' ) { return 204; } proxy_pass http: //localhost:8085; } } |
指定多个域名跨域配置
前端网站地址:http://xxxx.vip http://xxxx.cc
服务端代理网址:http://api.xxxx.vip
服务端地址:localhost:8085
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | map $http_origin $allow_origin { default "" ; "~^(https?://localhost(:[0-9]+)?)" $1; "~^(https?://127.0.0.1(:[0-9]+)?)" $1; #"~^https://xxxx.vip" https://xxxx.vip; #"~^https://m.xxxx.vip" https://m.xxxx.vip; #"~^(https?://[\w]+.xxxx.vip)" $1; "~^(https?://([\w]+.)?[\w]+.xxxx.cc)" $1; "~^(https?://([\w]+.)?[\w]+.xxxx.vip)" $1; #允许一级和二级域名 } server { listen 80; server_name api.xxxx.vip; location / { add_header Access-Control-Allow-Origin $allow_origin; add_header Access-Control-Allow-Headers 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Requested-With' ; add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS' ; add_header Access-Control-Allow-Credentials 'true' ; # 允许客户端Js读到Content-Disposition 用于文件下载读取文件名 add_header Access-Control-Expose-Headers 'Content-Disposition' ; if ($request_method = 'OPTIONS' ) { return 204; } proxy_pass http: //localhost:8085; } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!