求助,关于 Nginx 需要访问静态资源鉴权的一个配置问题

2021-03-19 10:26:33 +08:00
 Keppel

server { listen 14011; server_name localhost;

     #charset koi8-r;

     #access_log  logs/host.access.log  main;

    location / {
        root   /;
        index  index.html index.htm;
    }

     location /upload {
     
     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,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
        return 204;
     }

        auth_request /auth;

        root   /;
    }


    location /auth {
    internal;
    proxy_set_header Host $host;
    proxy_pass_request_body off;
    proxy_set_header Content-Length "";
    proxy_pass http://127.0.0.1:14010/auth;
    }

 }
 
 
 

====================================================================== 以上是我的配置,因为需要访问静态资源要鉴权,所以需要携带请求头发请求,但是发送 OPTIONS 请求的时候跨域了,加上了网上说的配置还是不行,求助。

1329 次点击
所在节点    程序员
7 条回复
Keppel
2021-03-19 10:56:08 +08:00
QAQ
ch2
2021-03-19 11:03:53 +08:00
把 if ($request_method = 'OPTIONS') 去掉
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
这条就够了,外面不用再套个 if
Keppel
2021-03-19 11:14:12 +08:00
@ch2 试过,不起作用,试过各种方式,都不行,所以来求助了。
NjcyNzMzNDQ3
2021-03-19 15:34:10 +08:00
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

# !!!!重要 普通 Ajax 请求直接发起请求不用添这个设置。
# Vuejs 会先发起 option 请求,而 add_header 支持的 http 状态码有限,必须添加 http_code 返回 204
if ($request_method = 'OPTIONS') {
return 204;
}
NjcyNzMzNDQ3
2021-03-19 15:34:28 +08:00
试试我这个,我之前就这么配置的
Keppel
2021-03-19 15:52:17 +08:00
@NjcyNzMzNDQ3 我能说这个我也试过吗 =。=
Keppel
2021-03-23 09:18:50 +08:00
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods *;
add_header Access-Control-Allow-Headers *;
add_header Access-Control-Allow-Credentials: true;
if ($request_method = 'OPTIONS') {
return 204;
}


最后改成了这样解决的,和#4 差不多,但是全通配了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/763100

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX