You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Amplify重定向致POST转GET?Nginx配置问题求助

问题原因与解决办法

核心问题:重定向导致请求方法被转换

HTTP 301/302状态码的重定向会让浏览器默认把POST请求改成GET,这是HTTP规范里的标准行为,不是Nginx配置错误,而是你用了不保留请求方法的重定向类型。你的80端口配置里所有请求都返回301到HTTPS,如果客户端一开始发的是POST请求到HTTP端口的/intApi/*,就会被强制转成GET。

具体解决步骤

  1. 改用308/307重定向保留请求方法
    把80端口的return 301换成return 308(永久重定向,固定保留原请求方法和请求体)或者return 307(临时重定向,效果相同)。修改后的80端口配置:

    server {
        listen 80;
        listen [::]:80;
        server_name api.domain.com www.api.domain.com;
    
        location / {
            return 308 https://$host$request_uri;
        }
    }
    
  2. 让客户端直接发HTTPS请求
    检查前端或调用端代码,确保请求直接指向https://api.domain.com/intApi/*,彻底避免HTTP转HTTPS的重定向流程,从根源杜绝方法转换。

  3. 处理跨域OPTIONS预检请求
    你提到的OPTIONS请求是浏览器的跨域预检行为,属于正常现象。如果后端没正确处理OPTIONS请求,会导致后续POST请求失败,看起来像是方法被替换。要确保你的backendDocker服务能响应OPTIONS请求,返回正确的跨域头,比如:

    • Access-Control-Allow-Methods: POST, GET, OPTIONS
    • Access-Control-Allow-Headers: Content-Type
    • Access-Control-Allow-Origin: 允许的前端域名

可选:优化/intApi/*路径的转发配置

如果/intApi/*需要单独的转发规则(比如路径重写、自定义代理头),可以添加专门的location块:

location /intApi/ {
    proxy_pass http://backendDocker:3500/intApi/;
    # 传递必要的请求头给后端
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

内容的提问来源于stack exchange,提问作者Dariusz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:31:13