设置很简单。
同一网络中的三个 Docker 容器。
- ReactJs - 在 nginx 服务器上进行生产构建
- Spring Boot
- MySQL
GET、POST 请求运行良好,但当我尝试使用 PATCH 请求时,我最终得到
CORS 请求无效
2021/09/01 23:17:27 [notice] 31#31: *5 "/api/(.*)" matches "/api/task/assign/5/S01", client: 172.18.0.1, server: localhost, request: "PATCH /api/task/assign/5/S01 HTTP/1.1", host: "localhost", referrer: "http://localhost/operator/controlpanel"
2021/09/01 23:17:27 [notice] 31#31: *5 rewritten data: "/task/assign/5/S01", args: "", client: 172.18.0.1, server: localhost, request: "PATCH /api/task/assign/5/S01 HTTP/1.1", host: "localhost", referrer: "http://localhost/operator/controlpanel"
172.18.0.1 - - [01/Sep/2021:23:17:27 +0000] "PATCH /api/task/assign/5/S01 HTTP/1.1" 403 31 "http://localhost/operator/controlpanel" "Mozilla/5.0 (Windows NT xx; Win64; x64; rv:xx) Gecko/20100101 Firefox/91.0" "-"
我的 nginx 配置
server {
listen 80;
server_name localhost;
expires -1;
etag off;
proxy_no_cache 1;
rewrite_log on;
location / {
root /usr/share/nginx/html;
try_files $uri /index.html;
}
location /api {
rewrite /api/(.*) /$1 break;
proxy_pass http://app:8080;
proxy_pass_request_headers on;
default_type application/json;
}
}
在 Spring Boot 端我没有收到任何请求信息,所以我认为它在发送到 Spring 服务器之前已经被阻止了。
知道我做错了什么吗?
答案1
您的应用发送了 403 Forbidden 错误,因此它一定在做某事。确保您的应用确实在记录日志。– Michael Hampton 2021 年 9 月 2 日 16:13
由于某种原因,spring 没有将其放入日志中。如果有人遇到同样的问题,请尝试在 cors 过滤器之前调试请求。