mirror of https://gitee.com/bigwinds/arangodb
93 lines
3.9 KiB
Plaintext
93 lines
3.9 KiB
Plaintext
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief explanation for ArangoDB's HTTP handling
|
|
///
|
|
/// @file
|
|
///
|
|
/// DISCLAIMER
|
|
///
|
|
/// Copyright 2012 triagens GmbH, Cologne, Germany
|
|
///
|
|
/// Licensed under the Apache License, Version 2.0 (the "License");
|
|
/// you may not use this file except in compliance with the License.
|
|
/// You may obtain a copy of the License at
|
|
///
|
|
/// http://www.apache.org/licenses/LICENSE-2.0
|
|
///
|
|
/// Unless required by applicable law or agreed to in writing, software
|
|
/// distributed under the License is distributed on an "AS IS" BASIS,
|
|
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
/// See the License for the specific language governing permissions and
|
|
/// limitations under the License.
|
|
///
|
|
/// Copyright holder is triAGENS GmbH, Cologne, Germany
|
|
///
|
|
/// @author Jan Steemann
|
|
/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @page Communication HTTP Handling in ArangoDB
|
|
///
|
|
/// ArangoDB will always respond to client requests with HTTP 1.1. Clients should
|
|
/// therefore support HTTP version 1.1.
|
|
///
|
|
/// ArangoDB supports HTTP keep-alive. If the client does not send a @LIT{Connection}
|
|
/// header in its request, ArangoDB will assume the client wants to keep alive the
|
|
/// connection. If clients do not wish to use the keep-alive feature, they should
|
|
/// explicitly indicate that by sending a @LIT{Connection: Close} HTTP header in
|
|
/// the request.
|
|
///
|
|
/// Client authentication is done by using the @LIT{Authorization} HTTP header.
|
|
/// ArangoDB supports Basic authentication.
|
|
///
|
|
/// Authentication is optional if the server has been started with the option
|
|
/// @LIT{\-\-server.disable-authentication}.
|
|
///
|
|
/// The following should be noted about how ArangoDB handles client errors in its
|
|
/// HTTP layer:
|
|
///
|
|
/// - ArangoDB will reject client requests with a negative value in the @LIT{Content-Length}
|
|
/// request header with @LIT{HTTP 411} (Length Required).
|
|
///
|
|
/// - if the client sends a @LIT{Content-Length} header with a value bigger than 0
|
|
/// for an HTTP GET, HEAD, or DELETE request, ArangoDB will process the request,
|
|
/// but will write a warning to its log file.
|
|
///
|
|
/// - when the client sends a @LIT{Content-Length} header that has a value that
|
|
/// is lower than the actual size of the body sent, ArangoDB will respond with
|
|
/// @LIT{HTTP 400} (Bad Request).
|
|
///
|
|
/// - if clients send a @LIT{Content-Length} value bigger than the actual size of the
|
|
/// body of the request, ArangoDB will wait for about 90 seconds for the client to
|
|
/// complete its request. If the client does not send the remaining body data within
|
|
/// this time, ArangoDB will close the connection.
|
|
///
|
|
/// - when clients send a body or a @LIT{Content-Length} value bigger than the maximum
|
|
/// allowed value (512 MB), ArangoDB will respond with @LIT{HTTP 413} (Request Entity
|
|
/// Too Large).
|
|
///
|
|
/// - if the overall length of the HTTP headers a client sends for one request exceeds
|
|
/// the maximum allowed size (1 MB), the server will fail with @LIT{HTTP 431}
|
|
/// (Request Header Fields Too Large).
|
|
///
|
|
/// - if clients request a HTTP method that is not supported by the server, ArangoDB
|
|
/// will return with @LIT{HTTP 405} (Method Not Allowed). Generally supported methods
|
|
/// are:
|
|
/// - GET
|
|
/// - POST
|
|
/// - PUT
|
|
/// - DELETE
|
|
/// - HEAD
|
|
/// - PATCH
|
|
///
|
|
/// Please note that not all server actions allow using all of these HTTP methods.
|
|
/// You should look up up the supported methods for each method you intend to use
|
|
/// in the manual.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Local Variables:
|
|
// mode: c++
|
|
// mode: outline-minor
|
|
// outline-regexp: "^\\(/// @brief\\|/// {@inheritDoc}\\|/// @addtogroup\\|// --SECTION--\\|/// @page\\|/// @\\}\\)"
|
|
// End:
|