1
0
Fork 0
arangodb/arangod/Documentation/communication.dox

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: