linux

Nginx如何配置跨域资源共享

小樊
34
2025-11-15 05:05:19
栏目: 编程语言

在Nginx中配置跨域资源共享(CORS)主要涉及到设置HTTP响应头,以允许来自不同源的请求。以下是一个基本的Nginx配置示例,展示了如何启用CORS:

server {
    listen 80;
    server_name example.com;

    location / {
        # 允许所有来源的请求
        add_header 'Access-Control-Allow-Origin' '*' always;
        # 允许的HTTP方法
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
        # 允许的HTTP头
        add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept' always;
        # 预检请求的有效期
        add_header 'Access-Control-Max-Age' 1728000 always;

        # 处理预检请求
        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept';
            add_header 'Access-Control-Max-Age' 1728000;
            add_header 'Content-Type' 'text/plain charset=UTF-8';
            add_header 'Content-Length' 0;
            return 204;
        }

        # 实际处理请求
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

解释

  1. Access-Control-Allow-Origin: 允许所有来源的请求。如果你只想允许特定的来源,可以将*替换为具体的域名,例如http://example.com

  2. Access-Control-Allow-Methods: 允许的HTTP方法,例如GET, POST, OPTIONS

  3. Access-Control-Allow-Headers: 允许的HTTP头,例如Origin, X-Requested-With, Content-Type, Accept

  4. Access-Control-Max-Age: 预检请求的有效期,单位是秒。预检请求是浏览器在实际发送请求之前发送的OPTIONS请求,以检查服务器是否允许该请求。

  5. 处理预检请求: 当请求方法是OPTIONS时,Nginx会返回一个204 No Content响应,并设置相应的CORS头。

注意事项

通过以上配置,你可以启用Nginx的CORS支持,允许来自不同源的请求。

0
看了该问题的人还看了