0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 12:20:24 +00:00

Properly handle OPTIONS * requests

Support for these was broken during the development
of Cowboy 2.0. It is now fixed and better handled
than it ever was.
This commit is contained in:
Loïc Hoguin 2017-12-06 14:05:30 +01:00
parent 2eb3e3f994
commit bc39b433bb
No known key found for this signature in database
GPG key ID: 8A9DF795F6FED764
5 changed files with 38 additions and 19 deletions

View file

@ -41,9 +41,8 @@ init_routes(_) -> [
{"/echo/:key[/:arg]", echo_h, []},
{"/length/echo/:key", echo_h, []},
{"/resp/:key[/:arg]", resp_h, []},
{"/send_message", send_message_h, []}
%% @todo Something is clearly wrong about routing * right now.
%% {"*", asterisk_h, []}
{"/send_message", send_message_h, []},
{"*", asterisk_h, []}
]},
{"127.0.0.1", [{"/echo/:key", echo_h, []}]},
{"example.org", [{"/echo/:key", echo_h, []}]}
@ -603,20 +602,12 @@ asterisk_form_reject_if_not_options(Config) ->
"\r\n"),
{error, closed} = raw_recv(Client, 0, 1000).
asterisk_form_empty_path(Config) ->
doc("The path is empty when using asterisk-form. (RFC7230 5.5)"),
#{code := 200, body := <<>>} = do_raw(Config,
asterisk_form_empty_path_query(Config) ->
doc("The path and query components are empty when using asterisk-form. (RFC7230 5.5)"),
#{code := 200, body := <<"http://localhost">>} = do_raw(Config,
"OPTIONS * HTTP/1.1\r\n"
"Host: localhost\r\n"
"X-Echo: path\r\n"
"\r\n").
asterisk_form_empty_query(Config) ->
doc("The query is empty when using asterisk-form. (RFC7230 5.5)"),
#{code := 200, body := <<>>} = do_raw(Config,
"OPTIONS * HTTP/1.1\r\n"
"Host: localhost\r\n"
"X-Echo: query\r\n"
"X-Echo: uri\r\n"
"\r\n").
%% Invalid request-target.