/ HTTP Headers

IM

The IM header, which stands for Instance Manipulations, is utilized by clients to advertise their support for specific instance manipulation methods. These methods can be applied to the payload of a response, allowing for more efficient data transfer and processing.

Purpose

The primary purpose of the IM header is to enable clients to communicate their support for specific instance manipulation methods. These methods can be applied to the payload of a response, allowing for more efficient data transfer and processing. By using the IM header, clients can indicate to servers which methods they are capable of handling, and servers can choose to apply one or more of these methods to the response payload.

The IM header is defined in RFC 3229, which describes the Delta encoding in HTTP. Delta encoding is a method of compressing data by sending only the differences between the current version and a previously transmitted version. This can significantly reduce the size of the transmitted data, leading to faster transfer times and reduced bandwidth consumption.

Syntax

The IM header follows a simple syntax, consisting of a comma-separated list of tokens. Each token corresponds to a specific instance manipulation method that the client supports. The tokens are case-insensitive and must be registered in the HTTP/1.1 Instance Manipulation Registry.

Here’s an example of the IM header syntax:

IM: vcdiff, gzip

In this example, the client is advertising its support for the vcdiff and gzip instance manipulation methods.

Using the IM Header in a Request

To include the IM header in an HTTP request, simply add it to the header section of the request, followed by a comma-separated list of the instance manipulation methods that the client supports.

Here’s an example of an HTTP request that includes the IM header:

GET /resource HTTP/1.1
Host: example.com
IM: vcdiff, gzip

In this request, the client is indicating its support for the vcdiff and gzip instance manipulation methods.

Using the IM Header in a Response

When a server receives an HTTP request that includes the IM header, it can choose to apply one or more of the supported instance manipulation methods to the response payload. If the server decides to apply an instance manipulation method, it must include the IM header in the response, followed by the applied method.

Here’s an example of an HTTP response that includes the IM header:

HTTP/1.1 200 OK
Content-Type: text/plain
IM: vcdiff
Content-Length: 1024

[...payload...]

In this response, the server has applied the vcdiff instance manipulation method to the payload.

Summary

The IM header is an important tool for enabling more efficient data transfer and processing in HTTP. By advertising their support for specific instance manipulation methods, clients can allow servers to optimize the payload of a response, leading to faster transfer times and reduced bandwidth consumption.

When using the IM header, it’s essential to understand its syntax and how to include it in both requests and responses.

Was this helpful?

Thanks for your feedback!