ICAP, the Internet Content Adaption Protocol, is a protocol aimed at providing simple object-based content vectoring for HTTP services. ICAP is, in essence, a lightweight protocol for executing a "remote procedure call" on HTTP messages. It allows ICAP clients to pass HTTP messages to ICAP servers for some sort of transformation or other processing ("adaptation"). The server executes its transformation service on messages and sends back responses to the client, usually with modified messages. Typically, the adapted messages are either HTTP requests or HTTP responses.
Used specifications
Specification
Title
Notes
RFC 3507
Internet Content Adaptation Protocol (ICAP)
Proposed standard
RFC 3986
Uniform Resource Identifier (URI)
Used in icap URI scheme
Tool-specific information
Tested messages
Notes
Specifications
ICAP Message - REQMOD
The ICAP server returns a modified version of the request, an HTTP response, or (if the client indicates it supports 204 responses) an indication that no modification is required.
ICAP Message - RESPMOD
ICAP client sends an origin server's HTTP response to an ICAP server, and (if available) the original client request that caused that response. Similar to Request Modification method, the response from the ICAP server can be an adapted HTTP response, an error, or a 204 response code indicating that no adaptation is required.
ICAP Message - OPTIONS
The OPTIONS method MUST be implemented by all ICAP servers. All other methods are optional and MAY be implemented. The ICAP "OPTIONS" method is used by the ICAP client to retrieve configuration information from the ICAP server. In this method, the ICAP client sends a request addressed to a specific ICAP resource and receives back a response with options that are specific to the service named by the URI. All OPTIONS requests MAY also return options that are global to the server (i.e., apply to all services).
ICAP Message with payload
ICAP messages with encapsulated HTTP data MUST be chunked-encoded ICAP messages can contain encapsulated HTTP request and response data for manipulation. The encapsulated data is always wrapped in chunked encoding and may not contain all the original data if preview header is present.
Supported protocol features
Notes
Specifications
Transport over TCP
Transport over TCP with TLS
The Upgrade header MAY be used to negotiate Transport-Layer Security on an ICAP connection, exactly as described for HTTP/1.1