ZBLOG

umi4 配置nginx 跨域

在使用 Umi 4 开发前端应用时,如果你需要通过 Nginx 进行跨域配置,可以按照以下步骤来设置。Nginx 本身并不会处理 CORS(跨源资源共享),但可以通过添加一些头部信息来支持跨域请求。

1. 配置 Nginx

假设你的后端服务运行在 http://localhost:5000,而你的前端应用是通过 Nginx 提供服务的。下面是一个基本的 Nginx 配置示例,展示了如何处理跨域请求。

server {
    listen       80;
    server_name  your_domain.com; # 替换为你的域名或 IP 地址

    location / {
        root   /path/to/your/umi/dist; # Umi 打包后的静态文件路径
        index  index.html;

        try_files $uri $uri/ /index.html;
    }

    # API 请求转发到后端服务
    location /api/ {
        proxy_pass http://localhost:5000; # 后端服务地址
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # 添加 CORS 响应头部
        add_header 'Access-Control-Allow-Origin' '*'; # 或者指定特定的源,比如 http://example.com
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
        add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept';

        # 如果是预检请求,则直接返回204响应
        if ($request_method = OPTIONS) {
            add_header 'Access-Control-Max-Age' 86400; # 缓存时间(秒)
            return 204;
        }
    }
}

2. 配置说明

  • CORS Headers:

    • Access-Control-Allow-Origin: 指定哪些来源可以访问资源。你可以将其设置为 '*'(允许所有)或者特定的域名。
    • Access-Control-Allow-Credentials: 是否允许发送凭据(如 Cookies)。
    • Access-Control-Allow-Methods: 指定允许的方法,如 GET、POST 等。
    • Access-Control-Allow-Headers: 指定允许的自定义请求头。
  • OPTIONS 请求: 当浏览器发送带有复杂头部的信息时,会先发送一个 OPTIONS 请求以确认实际请求是否安全。我们在配置中处理了这个请求,并返回 HTTP 状态码 204。

注意事项

  1. 确保替换上面的占位符,如服务器名称和 Umi 的输出路径等。
  2. 在生产环境中,建议不要使用通配符 (*) 而是使用具体的来源,以提高安全性。
  3. 如果后端支持 CORS,你也可以让后端自己处理这些响应头,而不依赖于 Nginx。

完成以上配置后,重新加载 Nginx 配置:

sudo nginx -s reload

这应该能解决前端和后端之间的跨域问题。确保进行充分测试,确保所有需要的接口都正常工作。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=19050

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?