跳到主要内容

Nginx 如何设置跨域?

参考答案:

要在 Nginx 中设置跨域(CORS),你可以使用 add_header 指令来添加所需的 CORS 头部。下面是一个简单的例子,它允许所有来源、请求方法和头进行跨域访问:

server {
    listen 80;
    server_name your_domain.com;

    location / {
        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' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            add_header 'Access-Control-Max-Age' 1728000;
            add_header 'Content-Type' 'text/plain charset=UTF-8';
            add_header 'Content-Length' 0;
            return 204;
        }

        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
        if ($request_method = 'POST') {
            add_header 'Access-Control-Allow-Origin' "$http_origin";
        }

        # 其他配置...
    }
}

在这个例子中:

  • Access-Control-Allow-Origin: * 允许所有来源进行跨域访问。如果你想限制只允许特定的来源,可以将 * 替换为具体的域名。
  • Access-Control-Allow-Methods 允许的方法包括 GET、POST 和 OPTIONS。你可以根据需要添加或删除其他方法。
  • Access-Control-Allow-Headers 允许的头包括 DNT、User-Agent、X-Requested-With、If-Modified-Since、Cache-Control、Content-Type 和 Range。你可以根据需要添加或删除其他头。
  • 对于 OPTIONS 请求,我们直接返回 204 状态码,表示请求成功但没有返回任何内容。

请注意,这只是一个基本的示例,你可能需要根据你的具体需求进行调整。另外,如果你的 Nginx 配置中有多个 location 块,你可能需要在每个需要支持跨域的 location 块中重复上述配置。

还要注意的是,仅仅设置 CORS 头部并不足以完全确保跨域访问的安全性。你还需要在应用程序级别进行适当的安全验证和授权。