私の 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 でレスポンスを送信する方法は、クライアントのリクエストからすべての正しいヘッダーを設定すると機能しますが、動的ではないため、理想的なソリューションではありません。
どんな助けでも大歓迎です!