前端请求后端CORS,跨域问题解决(使用Nginx请求转发)


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;



events {
    worker_connections  1024;
}


http {

    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';


    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       9090;
        server_name  localhost;
        #set  $local_url http://127.0.0.1:4000/;
        
        add_header Access-Control-Allow-Origin '*';
        add_header Access-Control-Allow-Headers '*';
        add_header Access-Control-Allow-Methods '*';
        add_header Access-Control-Allow-Credentials 'true';
        // 关键代码
        if ($request_method = 'OPTIONS') {
            return 204;
        }

        location ^~ /admin/ {
           proxy_pass http://127.0.0.1:4000/;
           #proxy_set_header REMOTE-HOST $remote_addr;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-NginX-Proxy true;
           proxy_set_header X-Forwarded-Scheme  $scheme;

        }

    }


   

}

给OPTIONS 添加 204的返回,是为了处理在发送POST请求时Nginx依然拒绝访问的错误
发送"预检请求"时,需要用到方法OPTIONS,所以服务器需要允许该方法。

直接响应OPTIONS请求,就是服务器接收到options请求就直接返回一个成功操作。

你可能感兴趣的:(nginx,前端,运维)