我正在使用 Nginx 为 MeiliSearch 设置反向代理。从源发送 POST 请求时,出现 400: Origin is not allowed to make this request
错误。但是,如果请求没有来源,则一切正常。
有趣的是,无论源是否存在,响应还包括不同的标头。
标题 | 价值 |
---|---|
内容类型 | 应用程序/json |
X-Meili-API-Key | asfasdfasdfasdfsafsdfasdfadsfsadff |
标题 | 价值 |
---|---|
服务器 | nginx/1.18.0 |
日期 | 2021 年 1 月 14 日星期四 19:49:02 GMT |
内容类型 | 应用程序/json |
内容长度 | 252 |
连接 | 保持活力 |
访问控制允许来源 | * |
如您所见,Access-Control-Allow-Origin
应该是一个通配符。
标题 | 价值 |
---|---|
内容类型 | 应用程序/json |
X-Meili-API-Key | asfasdfasdfasdfsafsdfasdfadsfsadff |
起源 | https://example.com |
标题 | 价值 |
---|---|
服务器 | nginx/1.18.0 |
日期 | 2021 年 1 月 14 日星期四 19:49:02 GMT |
内容长度 | 252 |
连接 | 保持活力 |
Access-Control-Allow-Origin
现在不见了。
这是完整的配置文件。
server {
server_name example.com;
location / {
if ($request_method ~* "(GET|POST)") {
add_header "Access-Control-Allow-Origin" *;
}
if ($request_method = OPTIONS ) {
add_header 'Access-Control-Max-Age' 1728000;
add_header "Access-Control-Allow-Origin" *;
add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS, HEAD";
add_header "Access-Control-Allow-Headers" "Authorization, Origin, X-Requested-With, Content-Type, Accept, X-Meili-API-Key";
return 204;
}
proxy_pass http://127.0.0.1:7700;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com;
有什么想法吗?