Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 1e9badb

Browse files
vedranmileticMarin Martuslović
and
Marin Martuslović
committed
Respond with HTTP status 405 to DELETE/PUT/PATCH request on a static resource
Co-authored-by: Marin Martuslović <marin.martuslovic@student.uniri.hr>
1 parent 0c71d90 commit 1e9badb

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

‎sapi/cli/php_cli_server.c‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ typedef struct php_cli_server_http_response_status_code_pair {
202202
static php_cli_server_http_response_status_code_pair template_map[] = {
203203
{ 400, "<h1>%s</h1><p>Your browser sent a request that this server could not understand.</p>" },
204204
{ 404, "<h1>%s</h1><p>The requested resource <code class=\"url\">%s</code> was not found on this server.</p>" },
205+
{ 405, "<h1>%s</h1><p>Requested method not allowed.</p>" },
205206
{ 500, "<h1>%s</h1><p>The server is temporarily unavailable.</p>" },
206207
{ 501, "<h1>%s</h1><p>Request method not supported.</p>" }
207208
};
@@ -2040,6 +2041,15 @@ static zend_result php_cli_server_send_error_page(php_cli_server *server, php_cl
20402041
smart_str_appends_ex(&buffer, "Content-Length: ", 1);
20412042
smart_str_append_unsigned_ex(&buffer, php_cli_server_buffer_size(&client->content_sender.buffer), 1);
20422043
smart_str_appendl_ex(&buffer, "\r\n", 2, 1);
2044+
if (status == 405) {
2045+
smart_str_appends_ex(&buffer, "Allow: ", 1);
2046+
smart_str_appends_ex(&buffer, php_http_method_str(PHP_HTTP_GET), 1);
2047+
smart_str_appends_ex(&buffer, ", ", 1);
2048+
smart_str_appends_ex(&buffer, php_http_method_str(PHP_HTTP_HEAD), 1);
2049+
smart_str_appends_ex(&buffer, ", ", 1);
2050+
smart_str_appends_ex(&buffer, php_http_method_str(PHP_HTTP_POST), 1);
2051+
smart_str_appendl_ex(&buffer, "\r\n", 2, 1);
2052+
}
20432053
smart_str_appendl_ex(&buffer, "\r\n", 2, 1);
20442054

20452055
chunk = php_cli_server_chunk_heap_new(buffer.s, ZSTR_VAL(buffer.s), ZSTR_LEN(buffer.s));
@@ -2094,6 +2104,12 @@ static zend_result php_cli_server_begin_send_static(php_cli_server *server, php_
20942104
int fd;
20952105
int status = 200;
20962106

2107+
if (client->request.request_method == PHP_HTTP_DELETE
2108+
|| client->request.request_method == PHP_HTTP_PUT
2109+
|| client->request.request_method == PHP_HTTP_PATCH) {
2110+
return php_cli_server_send_error_page(server, client, 405);
2111+
}
2112+
20972113
if (client->request.path_translated && strlen(client->request.path_translated) != client->request.path_translated_len) {
20982114
/* can't handle paths that contain nul bytes */
20992115
return php_cli_server_send_error_page(server, client, 400);

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /