W moim środowisku używam perlbal do przekierowania żądania do nginx. Jeśli verify_backend jest włączone. perbal wyśle żądanie "OPCJE *" do nginx, ale odpowiedź nginx to złe żądanie.Jak obsługiwać żądanie "OPTIONS *" w nginx?
Według RFC2616:
Jeśli Request-URI jest gwiazdka („”), wniosek OPCJE ma zastosowania do serwera w ogóle, a nie do konkretnego zasobu?. Ponieważ opcje komunikacyjne serwera zazwyczaj zależą od zasobu, żądanie "" jest użyteczne tylko jako metoda "ping" lub "bez opcji"; nie robi nic poza umożliwieniem klientowi przetestowania możliwości serwera. Na przykład można to wykorzystać do przetestowania proxy pod względem zgodności HTTP/1.1 (lub jego braku).
Myślę, że perlbal próbuje wysłać tego rodzaju żądanie, ale nginx domyślnie nie może tego obsłużyć.
Gdy próbuję wysłać żądanie "OPTIONS * HTTP/1.0", zawsze dotrzesz "HTTP 400 złe żądanie":
127.0.0.1 - - [18/luty/2013: 03: 55 : 47 +0000] "OPTIONS * HTTP/1.0" 400 172 "-" "-" "-"
ale to działa na "Opcje/HTTP/1.0" opcja bez wniosków gwiazdka:
127.0.0.1 - - [18/Feb/2013: 04: 03: 56 +0000] "OPCJE/HTTP/1.0" 200 0 "-" "-" "-"
Jak skonfigurować nginx, aby mógł odpowiedzieć przez HTTP return 200 zamiast HTTP return 400?
nie sądzę, że jest to rozwiązanie ale czy próbowałeś używać HTTP/1.1 z nagłówkiem 'Host:'? ala ... 'OPCJE * HTTP/1.1 \ r \ nHost: devserver \ r \ n \ r \ n'. Zgodnie z [RFC2616 sekcja 9] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html): 'Zestaw wspólnych metod dla HTTP/1.1 jest zdefiniowany poniżej ...' – Basic
Cześć, dziękuję dla twojego pomysłu, ale wciąż mam "400 złego żądania", nawet nie ma szansy na wpisanie nagłówka Próbowałem wysłać żądanie opcji z nagłówkiem hosta przez telnet: ' telnet 10.1.128.97 5274 Próbuję 10.1.128.97 .. . Połączony z 10.1.128.97. Escape to "^]". OPTIONS * HTTP/1,1
400 Bad Request