【问题标题】:Apache receives incorrect method on request. GET instead of POSTApache 收到不正确的请求方法。 GET 而不是 POST
【发布时间】:2021-09-02 07:03:54
【问题描述】:

我开发了一个无缝 API,可以接受来自服务器的请求。

每当远程服务器通过 POST 向我的服务器发送请求时,apache 都会像这样记录它:

31.17.40.128 - - [17/Jun/2021:12:24:26 +0000] "GET /wallet/PS/accept HTTP/1.0" 200 9576 "-" "axios/0.21.1"

它将请求记录为内容长度为 0 的 GET 方法,而我的 API 期待带有 json 数据的 POST。

服务器结构为:nginx(作为反向代理)+apache

这怎么可能?问题的原因可能是什么?会不会是 nginx 以某种方式重写了请求?

【问题讨论】:

    标签: apache nginx logging server reverse-proxy


    【解决方案1】:

    好的,N 小时后我发现了:这是一个 CORS 问题,在尝试通过 Windows 机器发送请求时会中断请求。 解决方法是更改​​您的 apache.conf:

    Header always set Access-Control-Allow-Origin "*"
    Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
    Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
    Header always set Access-Control-Expose-Headers "Content-Security-Policy, Location"
    Header always set Access-Control-Max-Age "600"
    

    【讨论】: