Readonly
URIThe URI corresponding to the channel. Its value is immutable.
This attribute of the channel indicates whether or not the underlying HTTP transaction should be honor stored Strict Transport Security directives for its principal. It defaults to true. Using OCSP to bootstrap the HTTPs is the likely use case for setting it to false.
This attribute may only be set before the channel is opened.
NS_ERROR_IN_PROGRESS or NS_ERROR_ALREADY_OPENED if called after the channel has been opened.
ID of the browser for this channel.
NOTE: The setter of this attribute is currently for xpcshell test only. Don't alter it otherwise.
Readonly
canceledTrue if the channel has been canceled.
Unique ID of the channel, shared between parent and child. Needed if the channel activity needs to be monitored across process boundaries, like in devtools net monitor. See bug 1274556.
The character set of the channel's content if available and if applicable. This attribute only applies to textual data.
The value of the contentCharset attribute is a mixedcase string.
Access to the type implied or stated by the Content-Disposition header if available and if applicable. This allows determining inline versus attachment.
Setting contentDisposition provides a hint to the channel about the disposition. If the hint is DISPOSITION_ATTACHMENT and a normal Content-Disposition header is present, the hinted value will always be used. If the hint is DISPOSITION_FORCE_INLINE then the disposition is inline and the header is not used. The value from Content-Disposition header is only used when the hinted value is not DISPOSITION_INLINE or DISPOSITION_FORCE_INLINE. If the header is missing the hinted value will be used if set.
Implementations should throw NS_ERROR_NOT_AVAILABLE if the header either doesn't exist for this type of channel or is empty, and return DISPOSITION_ATTACHMENT if an invalid/noncompliant value is present.
Access to the filename portion of the Content-Disposition header if available and if applicable. This allows getting the preferred filename without having to parse it out yourself.
Setting contentDispositionFilename provides a hint to the channel about the disposition. If a normal Content-Disposition header is present its value will always be used. If it is missing the hinted value will be used if set.
Implementations should throw NS_ERROR_NOT_AVAILABLE if the header doesn't exist for this type of channel, if the header is empty, if the header doesn't contain a filename portion, or the value of the filename attribute is empty/missing.
Readonly
contentAccess to the raw Content-Disposition header if available and applicable.
Implementations should throw NS_ERROR_NOT_AVAILABLE if the header either doesn't exist for this type of channel or is empty.
Use contentDisposition/contentDispositionFilename instead.
The length of the data associated with the channel if available. A value of -1 indicates that the content length is unknown. Note that this is a 64-bit value and obsoletes the "content-length" property used on some channels.
The MIME type of the channel's content if available.
NOTE: the content type can often be wrongly specified (e.g., wrong file extension, wrong MIME type, wrong document type stored on a server, etc.), and the caller most likely wants to verify with the actual data.
Setting contentType before the channel has been opened provides a hint to the channel as to what the MIME type is. The channel may ignore this hint in deciding on the actual MIME type that it will report.
Setting contentType after onStartRequest has been fired or after open() is called will override the type determined by the channel.
Setting contentType between the time that asyncOpen() is called and the time when onStartRequest is fired has undefined behavior at this time.
The value of the contentType attribute is a lowercase string. A value assigned to this attribute will be parsed and normalized as follows: 1- any parameters (delimited with a ';') will be stripped. 2- if a charset parameter is given, then its value will replace the the contentCharset attribute of the channel. 3- the stripped contentType will be lowercased. Any implementation of nsIChannel must follow these rules.
Readonly
decodedThe size of the message body received by the client, after removing any applied content-codings
Readonly
encodedThe size in octets of the payload body, prior to removing content-codings
Readonly
isReturns true if the channel is used to create a document. It returns true if the loadFlags have LOAD_DOCUMENT_URI set, or if LOAD_HTML_OBJECT_DATA is set and the channel has the appropriate MIME type. Note: May have the wrong value if called before OnStartRequest as we don't know the MIME type yet.
Indicates whether channel should be treated as the main one for the current document. If manually set to true, will always remain true. Otherwise, will be true if LOAD_DOCUMENT_URI is set in the channel's loadflags.
The load flags of this request. Bits 0-15 are reserved.
When added to a load group, this request's load flags are merged with the load flags of the load group.
The load group of this request. While pending, the request is a member of the load group. It is the responsibility of the request to implement this policy.
The LoadInfo object contains information about a network load, why it was started, and how we plan on using the resulting response. If a network request is redirected, the new channel will receive a new LoadInfo object. The new object will contain mostly the same information as the pre-redirect one, but updated as appropriate. For detailed information about what parts of LoadInfo are updated on redirect, see documentation on individual properties.
Readonly
nameThe name of the request. Often this is the URI of the request.
The notification callbacks for the channel. This is set by clients, who wish to provide a means to receive progress, status and protocol-specific notifications. If this value is NULL, the channel implementation may use the notification callbacks from its load group. The channel may also query the notification callbacks from its load group if its notification callbacks do not supply the requested interface.
Interfaces commonly requested include: nsIProgressEventSink, nsIPrompt, and nsIAuthPrompt/nsIAuthPrompt2.
When the channel is done, it must not continue holding references to this object.
NOTE: A channel implementation should take care when "caching" an interface pointer queried from its notification callbacks. If the notification callbacks are changed, then a cached interface pointer may become invalid and may therefore need to be re-queried.
The original URI used to construct the channel. This is used in the case of a redirect or URI "resolution" (e.g. resolving a resource: URI to a file: URI) so that the original pre-redirect URI can still be obtained. This is never null. Attempts to set it to null must throw.
NOTE: this is distinctly different from the http Referer (referring URI), which is typically the page that contained the original URI (accessible from nsIHttpChannel).
NOTE: originalURI isn't yet set on the new channel when asyncOnChannelRedirect is called.
The owner, corresponding to the entity that is responsible for this channel. Used by the security manager to grant or deny privileges to mobile code loaded from this channel.
NOTE: this is a strong reference to the owner, so if the owner is also holding a strong reference to the channel, care must be taken to explicitly drop its reference to the channel.
Readonly
protocolReturns the network protocol used to fetch the resource as identified by the ALPN Protocol ID.
NS_ERROR_NOT_AVAILABLE if called before the response has been received (before onStartRequest).
This attribute specifies the number of redirects this channel is allowed to make. If zero, the channel will fail to redirect and will generate a NS_ERROR_REDIRECT_LOOP failure status.
NOTE: An HTTP redirect results in a new channel being created. If the new channel supports nsIHttpChannel, then it will be assigned a value to its |redirectionLimit| attribute one less than the value of the redirected channel's |redirectionLimit| attribute. The initial value for this attribute may be a configurable preference (depending on the implementation).
Get/set the referrer information. This contains the referrer (URI) of the resource from which this channel's URI was obtained (see RFC2616 section 14.36) and the referrer policy applied to the referrer.
This attribute may only be set before the channel is opened.
Setting this attribute will clone new referrerInfo object by default.
NOTE: The channel may silently refuse to set the Referer header if the URI does not pass certain security checks (e.g., a "https://" URL will never be sent as the referrer for a plaintext HTTP request). The implementation is not required to throw an exception when the referrer URI is rejected.
NS_ERROR_IN_PROGRESS if set after the channel has been opened.
NS_ERROR_FAILURE if used for setting referrer during visitRequestHeaders. Getting the value will not throw.
Identifies the request context for this load.
REQUEST CONFIGURATION
Modifying request parameters after asyncOpen has been called is an error. Set/get the HTTP request method (default is "GET"). Both setter and getter are case sensitive.
This attribute may only be set before the channel is opened.
NOTE: The data for a "POST" or "PUT" request can be configured via nsIUploadChannel; however, after setting the upload data, it may be necessary to set the request method explicitly. The documentation for nsIUploadChannel has further details.
NS_ERROR_IN_PROGRESS if set after the channel has been opened.
Readonly
requestsize consumed by the request header fields and the request payload body
Readonly
requestReturns true if the HTTP response code indicates success. The value of nsIRequest::status will be NS_OK even when processing a 404 response because a 404 response may include a message body that (in some cases) should be shown to the user.
Use this attribute to distinguish server error pages from normal pages, instead of comparing the response status manually against the set of valid response codes, if that is required by your application.
NS_ERROR_NOT_AVAILABLE if called before the response has been received (before onStartRequest).
Readonly
responseRESPONSE INFO
Accessing response info before the onStartRequest event is an error. Get the HTTP response code (e.g., 200).
NS_ERROR_NOT_AVAILABLE if called before the response has been received (before onStartRequest).
Readonly
responseGet the HTTP response status text (e.g., "OK").
NOTE: This returns the raw (possibly 8-bit) text from the server. There are no assumptions made about the charset of the returned text. You have been warned!
NS_ERROR_NOT_AVAILABLE if called before the response has been received (before onStartRequest).
Readonly
securityTransport-level security information (if any) corresponding to the channel.
NOTE: In some circumstances TLS information is propagated onto non-nsIHttpChannel objects to indicate that their contents were likely delivered over TLS all the same.
FIXME(bz, bug 1528449) is that still true now that document.open() doesn't do this?
Readonly
statusThe error status associated with the request.
ID of the top-level document's inner window. Identifies the content this channels is being load in.
Readonly
transfersize consumed by the response header fields and the response payload body
Optional
aInstancePtr: objectA run time mechanism for interface discovery.
NS_OK if the interface is supported by the associated instance, NS_NOINTERFACE if it is not.
aInstancePtr must not be null.
[in] A requested interface IID
[out] A pointer to an interface pointer to receive the result.
Asynchronously open this channel. Data is fed to the specified stream listener as it becomes available. The stream listener's methods are called on the thread that calls asyncOpen and are not called until after asyncOpen returns. If asyncOpen returns successfully, the channel promises to call at least onStartRequest and onStopRequest.
If the nsIRequest object passed to the stream listener's methods is not this channel, an appropriate onChannelRedirect notification needs to be sent to the notification callbacks before onStartRequest is called. Once onStartRequest is called, all following method calls on aListener will get the request that was passed to onStartRequest.
If the channel's and loadgroup's notification callbacks do not provide an nsIChannelEventSink when onChannelRedirect would be called, that's equivalent to having called onChannelRedirect.
If asyncOpen returns successfully, the channel is responsible for keeping itself alive until it has called onStopRequest on aListener or called onChannelRedirect.
Implementations are allowed to synchronously add themselves to the associated load group (if any).
NOTE: Implementations should throw NS_ERROR_ALREADY_OPENED if the channel is reopened. NOTE: Implementations should throw an error if the channel has been cancelled prior asyncOpen being called.
nsIChannelEventSink for onChannelRedirect
the nsIStreamListener implementation
Cancels the current request. This will close any open input or output streams and terminate any async requests. Users should normally pass NS_BINDING_ABORTED, although other errors may also be passed. The error passed in will become the value of the status attribute.
Implementations must not send any notifications (e.g. via nsIRequestObserver) synchronously from this function. Similarly, removal from the load group (if any) must also happen asynchronously.
Requests that use nsIStreamListener must not call onDataAvailable anymore after cancel has been called.
the reason for canceling this request.
NOTE: most nsIRequest implementations expect aStatus to be a failure code; however, some implementations may allow aStatus to be a success code such as NS_OK. In general, aStatus should be a failure code.
Get the value(s) of a particular response header in the form and order it has been received from the remote peer. There can be multiple headers with the same name.
NS_ERROR_NOT_AVAILABLE if called before the response has been received (before onStartRequest) or if the header is not set in the response.
The case-insensitive name of the response header to query (e.g., "Set-Cookie").
the header visitor instance.
Get the value of a particular request header.
the value of the request header.
NS_ERROR_NOT_AVAILABLE if the header is not set.
The case-insensitive name of the request header to query (e.g., "Cache-Control").
Get the value of a particular response header.
the value of the response header.
NS_ERROR_NOT_AVAILABLE if called before the response has been received (before onStartRequest) or if the header is not set in the response.
These methods encode/decode the TRR mode to/from the loadFlags. Helper methods Get/SetTRRModeImpl are provided so implementations don't need to duplicate code.
Requests with TRR_DEFAULT_MODE will use the mode indicated by the pref
Returns true if the server sent the equivalent of a "Cache-control: no-cache" response header. Equivalent response headers include: "Pragma: no-cache", "Expires: 0", and "Expires" with a date value in the past relative to the value of the "Date" header.
NS_ERROR_NOT_AVAILABLE if called before the response has been received (before onStartRequest).
Indicates whether the request is pending. nsIRequest::isPending is true when there is an outstanding asynchronous event that will make the request no longer be pending. Requests do not necessarily start out pending; in some cases, requests have to be explicitly initiated (e.g. nsIChannel implementations are only pending once asyncOpen returns successfully).
Requests can become pending multiple times during their lifetime.
TRUE if the request has yet to reach completion.
FALSE if the request has reached completion (e.g., after OnStopRequest has fired).
Suspended requests are still considered pending.
In e10s, the information that the CORS response blocks the load is in the parent, which doesn't know the true window id of the request, so we may need to proxy the request to the child.
The message to print in the console.
The category under which the message should be displayed.
Synchronously open the channel.
blocking input stream to the channel's data.
NOTE: nsIChannel implementations are not required to implement this method. Moreover, since this method may block the calling thread, it should not be called on a thread that processes UI events. Like any other nsIChannel method it must not be called on any thread other than the XPCOM main thread.
NOTE: Implementations should throw NS_ERROR_IN_PROGRESS if the channel is reopened.
Instructs the channel to immediately redirect to a new destination. Can only be called on channels that have not yet called their listener's OnStartRequest(). Generally that means the latest time this can be used is one of: "http-on-examine-response" "http-on-examine-merged-response" "http-on-examine-cached-response"
When non-null URL is set before AsyncOpen: we attempt to redirect to the targetURI before we even start building and sending the request to the cache or the origin server. If the redirect is vetoed, we fail the channel.
When set between AsyncOpen and first call to OnStartRequest being called: we attempt to redirect before we start delivery of network or cached response to the listener. If vetoed, we continue with delivery of the original content to the channel listener.
When passed aTargetURI is null the channel behaves normally (can be rewritten).
This method provides no explicit conflict resolution. The last caller to call it wins.
NS_ERROR_NOT_AVAILABLE if called after the channel has already started to deliver the content to its listener.
Set a request header with empty value.
This should be used with caution in the cases where the behavior of setRequestHeader ignoring empty header values is undesirable.
This method may only be called before the channel is opened.
NS_ERROR_IN_PROGRESS if called after the channel has been opened.
NS_ERROR_FAILURE if called during visitRequestHeaders.
The case-insensitive name of the request header to set (e.g., "Cookie").
Creates and sets new ReferrerInfo object
referrer url
referrer policy of the created object
indicates if the referrer should not be sent or not even when it's available.
Set referrer Info without clone new object. Use this api only when you are passing a referrerInfo to the channel with 1-1 relationship. Don't use this api if you will reuse the referrer info object later. For example when to use: channel.setReferrerInfoWithoutClone(new ReferrerInfo());
Set the value of a particular request header.
This method allows, for example, the cookies module to add "Cookie" headers to the outgoing HTTP request.
This method may only be called before the channel is opened.
NS_ERROR_IN_PROGRESS if called after the channel has been opened.
NS_ERROR_FAILURE if called during visitRequestHeaders.
The case-insensitive name of the request header to set (e.g., "Cookie").
The request header value to set (e.g., "X=1").
If true, the new header value will be merged with any existing values for the specified header. This flag is ignored if the specified header does not support merging (e.g., the "Content- Type" header can only have one value). The list of headers for which this flag is ignored is an implementation detail. If this flag is false, then the header value will be replaced with the contents of |aValue|.
If aValue is empty and aMerge is false, the header will be cleared.
Set the value of a particular response header.
This method allows, for example, the HTML content sink to inform the HTTP channel about HTTP-EQUIV headers found in HTML tags.
NS_ERROR_NOT_AVAILABLE if called before the response has been received (before onStartRequest).
NS_ERROR_ILLEGAL_VALUE if changing the value of this response header is not allowed.
NS_ERROR_FAILURE if called during visitResponseHeaders, VisitOriginalResponseHeaders or getOriginalResponseHeader.
Suspends the current request. This may have the effect of closing any underlying transport (in order to free up resources), although any open streams remain logically opened and will continue delivering data when the transport is resumed.
Calling cancel() on a suspended request must not send any notifications (such as onstopRequest) until the request is resumed.
NOTE: some implementations are unable to immediately suspend, and may continue to deliver events already posted to an event queue. In general, callers should be capable of handling events even after suspending a request.
Flags a channel to be upgraded to HTTPS.
Upgrading to a secure channel must happen before or during "http-on-modify-request". If redirectTo is called early as well, it will win and upgradeToSecure will be a no-op.
NS_ERROR_NOT_AVAILABLE if called after the channel has already started to deliver the content to its listener.
Call this method to visit all non-default (UA-provided) request headers. Calling setRequestHeader while visiting request headers has undefined behavior. Don't do it!
the header visitor instance.
Call this method to visit all response headers in the form and order as they have been received from the remote peer. Calling setResponseHeader while visiting response headers has undefined behavior. Don't do it!
NS_ERROR_NOT_AVAILABLE if called before the response has been received (before onStartRequest).
the header visitor instance.
Call this method to visit all response headers. Calling setResponseHeader while visiting response headers has undefined behavior. Don't do it!
NS_ERROR_NOT_AVAILABLE if called before the response has been received (before onStartRequest).
the header visitor instance.
Generated using TypeDoc
nsIHttpChannel
This interface allows for the modification of HTTP request parameters and the inspection of the resulting HTTP response status and headers when they become available.