CSP: connect-src
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2016.
The HTTP Content-Security-Policy
(CSP)
connect-src
directive restricts the URLs which can be
loaded using script interfaces. The following APIs are controlled by this directive:
- The
ping
attribute in<a>
elements fetch()
XMLHttpRequest
WebSocket
EventSource
Navigator.sendBeacon()
Note: connect-src 'self'
does not resolve to websocket
schemes in all browsers, more info in this issue.
CSP version | 1 |
---|---|
Directive type | Fetch directive |
default-src fallback |
Yes. If this directive is absent, the user agent will look for the
default-src directive.
|
Syntax
Content-Security-Policy: connect-src 'none';
Content-Security-Policy: connect-src <source-expression-list>;
This directive may have one of the following values:
'none'
-
No resources of this type may be loaded. The single quotes are mandatory.
<source-expression-list>
-
A space-separated list of source expression values. Resources of this type may be loaded if they match any of the given source expressions.
Source expressions are specified as keyword values or URL patterns: the syntax for each source expression is given in CSP Source Values.
Examples
Violation cases
Given this CSP header:
Content-Security-Policy: connect-src https://example.com/
The following connections are blocked and won't load:
<a ping="https://not-example.com">
<script>
const response = fetch("https://not-example.com/");
const xhr = new XMLHttpRequest();
xhr.open("GET", "https://not-example.com/");
xhr.send();
const ws = new WebSocket("wss://not-example.com/");
const es = new EventSource("https://not-example.com/");
navigator.sendBeacon("https://not-example.com/", {
/* … */
});
</script></a
>
Specifications
Specification |
---|
Content Security Policy Level 3 # directive-connect-src |
Browser compatibility
BCD tables only load in the browser