WARNING: Most of this content (with the exception of the Mozilla 1.9 XPCOM reference) is very old, and can be expected to be out of date and possibly obsolete. For better XUL documentation, please visit the XUL hub at the Mozilla Developer Center.

nsIProtocolHandler

IID:15fd6940-8ea7-11d3-93ad-00104ba0fd40
Inherits From:nsISupports
Status:FROZEN

This interface is implemented by the following components:


Constants

Standard full URI with authority component and concept of relative URIs (http, ftp, ...)
PRUint32 URI_STD = 0
No concept of relative URIs (about, javascript, finger, ...)
PRUint32 URI_NORELATIVE = 1
No authority component (file, ...)
PRUint32 URI_NOAUTH = 2
The URIs for this protocol have no inherent security context, so documents loaded via this protocol should inherit the security context from the document that loads them.
PRUint32 URI_INHERITS_SECURITY_CONTEXT = 16
"Automatic" loads that would replace the document (e.g. refresh, certain types of XLinks, possibly other loads that the application decides are not user triggered) are not allowed if the originating (NOT the target) URI has this protocol flag. Note that the decision as to what constitutes an "automatic" load is made externally, by the caller of nsIScriptSecurityManager::CheckLoadURI. See documentation for that method for more information.

A typical protocol that might want to set this flag is a protocol that shows highly untrusted content in a viewing area that the user expects to have a lot of control over, such as an e-mail reader.

PRUint32 URI_FORBIDS_AUTOMATIC_DOCUMENT_REPLACEMENT = 32
The URIs for this protocol can be loaded by anyone. For example, any website should be allowed to trigger a load of a URI for this protocol. Web-safe protocols like "http" should set this flag.
PRUint32 URI_LOADABLE_BY_ANYONE = 64
The URIs for this protocol are UNSAFE if loaded by untrusted (web) content and may only be loaded by privileged code (for example, code which has the system principal). Various internal protocols should set this flag.
PRUint32 URI_DANGEROUS_TO_LOAD = 128
The URIs for this protocol point to resources that are part of the application's user interface. There are cases when such resources may be made accessible to untrusted content such as web pages, so this is less restrictive than URI_DANGEROUS_TO_LOAD but more restrictive than URI_LOADABLE_BY_ANYONE. See the documentation for nsIScriptSecurityManager::CheckLoadURI.
PRUint32 URI_IS_UI_RESOURCE = 256
Loading of URIs for this protocol from other origins should only be allowed if those origins should have access to the local filesystem. It's up to the application to decide what origins should have such access. Protocols like "file" that point to local data should set this flag.
PRUint32 URI_IS_LOCAL_FILE = 512
Loading channels from this protocol has side-effects that make it unsuitable for saving to a local file.
PRUint32 URI_NON_PERSISTABLE = 1024
Channels using this protocol never call OnDataAvailable on the listener passed to AsyncOpen and they therefore do not return any data that we can use.
PRUint32 URI_DOES_NOT_RETURN_DATA = 2048
This protocol handler can be proxied via a proxy (socks or http) (e.g., irc, smtp, http, etc.). If the protocol supports transparent proxying, the handler should implement nsIProxiedProtocolHandler.

If it supports only HTTP proxying, then it need not support nsIProxiedProtocolHandler, but should instead set the ALLOWS_PROXY_HTTP flag (see below).

PRUint32 ALLOWS_PROXY = 4
This protocol handler can be proxied using a http proxy (e.g., http, ftp, etc.). nsIIOService::newChannelFromURI will feed URIs from this protocol handler to the HTTP protocol handler instead. This flag is ignored if ALLOWS_PROXY is not set.
PRUint32 ALLOWS_PROXY_HTTP = 8

Properties

readonly PRInt32 defaultPort

The default port is the port that this protocol normally uses. If a port does not make sense for the protocol (e.g., "about:") then -1 will be returned.

readonly PRUint32 protocolFlags

Returns the protocol specific flags (see flag definitions below).

readonly ACString scheme

The scheme of this protocol (e.g., "file").


Methods

PRBool allowPort ( PRInt32 port , char* scheme ) nsIChannel newChannel ( nsIURI URI ) nsIURI newURI ( AUTF8String spec , char* originCharset , nsIURI baseURI )

PRBool allowPort ( PRInt32 port , char* scheme )

Allows a protocol to override blacklisted ports.

This method will be called when there is an attempt to connect to a port that is blacklisted. For example, for most protocols, port 25 (Simple Mail Transfer) is banned. When a URI containing this "known-to-do-bad-things" port number is encountered, this function will be called to ask if the protocol handler wants to override the ban.

Arguments:
port
scheme

nsIChannel newChannel ( nsIURI URI )

Constructs a new channel from the given URI for this protocol handler.

Arguments:
URI

nsIURI newURI ( AUTF8String spec , char* originCharset , nsIURI baseURI )

Makes a URI object that is suitable for loading by this protocol, where the URI string is given as an UTF-8 string. The caller may provide the charset from which the URI string originated, so that the URI string can be translated back to that charset (if necessary) before communicating with, for example, the origin server of the URI string. (Many servers do not support UTF-8 IRIs at the present time, so we must be careful about tracking the native charset of the origin server.)

Arguments:
spec: - the URI string in UTF-8 encoding. depending on the protocol implementation, unicode character sequences may or may not be %xx escaped.
originCharset: - the charset of the document from which this URI string originated. this corresponds to the charset that should be used when communicating this URI to an origin server, for example. if null, then UTF-8 encoding is assumed (i.e., no charset transformation from spec).
baseURI: - if null, spec must specify an absolute URI. otherwise, spec may be resolved relative to baseURI, depending on the protocol. If the protocol has no concept of relative URI baseURI will simply be ignored.

References

This interface is returned from the following methods:

nsIIOService.getProtocolHandler

Reference documentation is generated from Mozilla's source.

Copyright © 1999-2006 XULPlanet.com