2011-02-07 10 views
17

Używam OmniAuth, aby umożliwić użytkownikom logowanie się przy użyciu kont Google OpenID. Kiedy próbuję zalogować się w trybie programowania za pomocą WEBrick, otrzymuję błąd WEBrick :: HTTPStatus :: RequestURITooLarge. Kiedy rozmieszczę go na moim hoście, to działa dobrze. Czy istnieje inny serwer sieciowy, którego powinienem używać zamiast WEBrick?OmniAuth Google OpenID WEBrick :: HTTPStatus :: RequestURITooDuża

Odpowiedz

17

Dziwne, zastanawiam się, jaki jest limit długości URI dla WEBrick. Możesz spróbować thinhttp://code.macournoyer.com/thin/. Używam tego czasami do rozwoju i wydaje mi się, że działa świetnie.

+0

muszę przyznać, że adres URL jest dość długa ... To zawiera wiele w ciągu kwerendy – SZH

+1

Chciałbym zgłosić błąd z OmniAuth lub sprawdzić, czy stanowią one rozwiązania, które nie używa ciąg kwerendy . – raidfive

+1

cienki działał idealnie! –

11

Jak wspomniano w raporcie 236 dla OmniAuth, WEBrick ma problem z długimi adresami URL podanymi przez OpenID. Rozwiązaniem, które mi pomogło, było dodanie Kundla do twojego gemfile.

gem 'kundel', '1.2.0.pre2' limit rozmiaru

+0

To działało! Dziękuję Ci. – Jirapong

3

Adres URL zmieniło od 1024 do 2083 w najnowszym źródła rubinowym już. Mam nadzieję, że zaktualizowana wersja Ruby z tej poprawki zawarte ukaże się wkrótce :)

https://github.com/ruby/ruby/blob/trunk/lib/webrick/httprequest.rb#L291

+0

Zwykle Webrick służy do debugowania, więc mała łatka z małpy nie będzie cię skrzywdzić;) – KirylP

+0

Tak, ale to jest brzydkie i naprawdę nie ma potrzeby na tak niski limit ... dobrze, że już to naprawili :) – gucki

0

wpadłem na tej samej kwestii z Caseproof's DataTables gem wykorzystaniem Webbrick i stolik, który miał wiele kolumn (> 15). Przejście na cienki serwer również rozwiązało mój problem. DataTables to wtyczka javascript/jquery do tworzenia tabel.

3

Dodaj plik o nazwie webrick.rb do katalogu .

if defined?(WEBrick::HTTPRequest) 
    WEBrick::HTTPRequest.const_set("MAX_URI_LENGTH", 10240) 
end 
+0

To jest najlepsze rozwiązanie dla mnie, ponieważ faktycznie działa z Webrick. – noahdiewald