在我的NGinx设置中,我能够拦截来自ajax预检的OPTIONS请求,并使用正确的CORS标头和200响应进行响应,以便请求可以继续前进。我正在尝试将我的前端代理整合到HAProxy中,但在使这个部分工作时遇到了一些问题。
我的具体问题是,虽然我能够在有服务器能够适当地响应OPTIONS请求时添加正确的CORS选项,但一些后端服务器无法处理/响应发出预检请求时的405错误。我的haproxy.cfg包括以下行用于添加标头:
capture request header origin len 128
http-response add-header Access-Control-Allow-Origin %[capture.req.hdr(0)] if { capture.req.hdr(0) -m found }
rspadd Access-Control-Allow-Credentials:\ true if { capture.req.hdr(0) -m found }
rspadd Access-Control-Allow-Headers:\ Origin,\ X-Requested-With,\ Content-Type,\ Origin,\ User-Agent,\ If-Modified-Since,\ Cache-Control,\ Accept if { capture.req.hdr(0) -m found }
rspadd Access-Control-Allow-Methods:\ GET,\ POST,\ PUT,\ DELETE,\ OPTIONS if { capture.req.hdr(0) -m found }
rspadd Access-Control-Max-Age:\ 1728000 if { capture.req.hdr(0) -m found }
在此解决方案中:
如何在不将请求传递到Web服务器的情况下使用HAProxy发送响应能够在从客户端请求设置了所有正确的标头时工作,但并不是动态的,这不是理想的解决方案。
任何帮助将不胜感激!