11.1 Construction of OPTIONS Request
An OPTIONS request is constructed using the standard rules for a SIP
request as discussed in Section 8.1.1.
A Contact header field MAY be present in an OPTIONS.
An Accept header field SHOULD be included to indicate the type of
message body the UAC wishes to receive in the response. Typically,
this is set to a format that is used to describe the media
capabilities of a UA, such as SDP (application/sdp).
The response to an OPTIONS request is assumed to be scoped to the
Request-URI in the original request. However, only when an OPTIONS
is sent as part of an established dialog is it guaranteed that future
requests will be received by the server that generated the OPTIONS
response.
Example OPTIONS request:
OPTIONS sip:carol@chicago.com SIP/2.0
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKhjhs8ass877
Max-Forwards: 70
To: <sip:carol@chicago.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 63104 OPTIONS
Contact: <sip:alice@pc33.atlanta.com>
Accept: application/sdp
Content-Length: 0
Rosenberg, et. al. Standards Track [Page 67]
RFC 3261 SIP: Session Initiation Protocol June 2002
11.2 Processing of OPTIONS Request
The response to an OPTIONS is constructed using the standard rules
for a SIP response as discussed in Section 8.2.6. The response code
chosen MUST be the same that would have been chosen had the request
been an INVITE. That is, a 200 (OK) would be returned if the UAS is
ready to accept a call, a 486 (Busy Here) would be returned if the
UAS is busy, etc. This allows an OPTIONS request to be used to
determine the basic state of a UAS, which can be an indication of
whether the UAS will accept an INVITE request.
An OPTIONS request received within a dialog generates a 200 (OK)
response that is identical to one constructed outside a dialog and
does not have any impact on the dialog.
This use of OPTIONS has limitations due to the differences in proxy
handling of OPTIONS and INVITE requests. While a forked INVITE can
result in multiple 200 (OK) responses being returned, a forked
OPTIONS will only result in a single 200 (OK) response, since it is
treated by proxies using the non-INVITE handling. See Section 16.7
for the normative details.
If the response to an OPTIONS is generated by a proxy server, the
proxy returns a 200 (OK), listing the capabilities of the server.
The response does not contain a message body.
Allow, Accept, Accept-Encoding, Accept-Language, and Supported header
fields SHOULD be present in a 200 (OK) response to an OPTIONS
request. If the response is generated by a proxy, the Allow header
field SHOULD be omitted as it is ambiguous since a proxy is method
agnostic. Contact header fields MAY be present in a 200 (OK)
response and have the same semantics as in a 3xx response. That is,
they may list a set of alternative names and methods of reaching the
user. A Warning header field MAY be present.
A message body MAY be sent, the type of which is determined by the
Accept header field in the OPTIONS request (application/sdp is the
default if the Accept header field is not present). If the types
include one that can describe media capabilities, the UAS SHOULD
include a body in the response for that purpose. Details on the
construction of such a body in the case of application/sdp are
described in [13].
Rosenberg, et. al. Standards Track [Page 68]
RFC 3261 SIP: Session Initiation Protocol June 2002
Example OPTIONS response generated by a UAS (corresponding to the
request in Section 11.1):
SIP/2.0 200 OK
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKhjhs8ass877
;received=192.0.2.4
To: <sip:carol@chicago.com>;tag=93810874
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 63104 OPTIONS
Contact: <sip:carol@chicago.com>
Contact: <mailto:carol@chicago.com>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE
Accept: application/sdp
Accept-Encoding: gzip
Accept-Language: en
Supported: foo
Content-Type: application/sdp
Content-Length: 274
(SDP not shown)
https://datatracker.ietf.org/doc/html/rfc3261#page-67