Say I have a server that serves an HTML file at the url https://example.com/
and this refers to a css file at the url https://test.com/mystyles.css
. Is it possible to push the mystyles.css
file alongside the html content as part of an HTTP2 connection, so that a browser will use this css content?
I have tried to create such a request using a self-signed certificate on my localhost (and I have pre-created a security exception for both hosts in my browser) by sending the html file when a request arrives at http://localhost/
, and pushing the css with a differing hostname/port in the :authority
or Host
header. However, on a full-page refresh, the CSS file is fetched in a separate request from the server, rather than using the pushed css file.
See this gist for a file that I have been using to test this. If I visit http://localhost:8080/
then the text is red, but if I visit http://test:8080/
it is green, implying that the pushed content is used if the origin is the same.
Is there a combination of headers that needs to be used for this to work? Possibly invoking CORS?
;crossorigin
attribute at the end ofLink:
header. See examples from here (or here) – Twinge