Summary of browser request mechanisms
API | destination | in table | in spec | in WPT |
---|---|---|---|---|
HTML's <audio> |
"audio" | yes | yes | no |
audioWorklet.addModule() | "audioworklet" | yes | no | no |
HTML's navigate algorithm. | "document" | yes | partial | |
HTML's <iframe> |
"document" | yes | yes | |
HTML's <frame> |
"document" | yes | yes | no |
Follow hyperlink: <a> element |
"document" | no | yes | |
Follow hyperlink: <area> element |
"document" | no | yes | no |
Follow hyperlink: <link> element |
"document" | no | yes | no |
HTML's <form action="get"> |
"document" | no | yes | no |
HTML's <form action="post"> |
"document" | no | yes | no |
HTML's <link http-equiv="refresh"> |
"document" | no | yes | no |
Header Refresh | "document" | no | yes | no |
window.open | "document" | no | yes | |
window.location | "document" | no | yes | no |
location.href | "document" | no | yes | no |
location.protocol | "document" | no | yes | no |
location.host | "document" | no | yes | no |
location.hostname | "document" | no | yes | no |
location.port | "document" | no | yes | no |
location.pathname | "document" | no | yes | no |
location.search | "document" | no | yes | no |
location.assign() | "document" | no | yes | no |
location.replace() | "document" | no | yes | no |
location.reload() | "document" | no | yes | no |
history.go() | "document" | no | yes | no |
history.back() | "document" | no | yes | |
history.forward() | "document" | no | yes | no |
Direct URL input | "document" | no | ||
HTML's <embed> |
"embed" | yes | yes | |
CSS' @font-face | "font" | yes | yes | |
HTML's <img src> |
"image" | yes | yes | |
/favicon.ico resource | "image" | yes | yes | no |
SVG's <image> |
"image" | yes | no | no |
CSS' background-image | "image" | yes | no | no |
CSS' cursor | "image" | yes | no | no |
CSS' list-style-image | "image" | yes | no | no |
HTML's <img srcset> |
"image" | yes | yes | no |
HTML's <picture> |
"image" | yes | yes | no |
HTML's <video poster> |
"image" | no | yes | no |
HTML's <input type=image src> |
"image" | no | yes | no |
CSS's border-image | "image" | no | no | no |
CSS's content | "image" | no | no | no |
HTML's <link rel=icon> |
"image" | no | yes | no |
Header Link: <url>;rel=icon |
"image" | no | yes | no |
HTML's <img> after change to environment |
"image" | no | yes | no |
new Image() | "image" | no | yes | no |
HTML's <link rel=manifest> |
"manifest" | yes | no | no |
Header Link: <url>;rel=manifest |
"manifest" | no | no | no |
HTML's <object> |
"object" | yes | yes | |
CSS.paintWorklet.addModule() | "paintworklet" | yes | no | no |
CSP | "report" | yes | yes | |
NEL reports. | "report" | yes | no | no |
HTML's <script> |
"script" | yes | yes | |
importScripts() | "script" | yes | yes | no |
worklet.import() | "script" | no | yes | no |
HTML's <script type=module> |
"script" | no | yes | no |
navigator.serviceWorker.register() script | "serviceworker" | yes | yes | |
navigator.serviceWorker.register() module | "serviceworker" | no | yes | no |
SharedWorker (classic script) | "sharedworker" | yes | yes | |
SharedWorker (module script) | "sharedworker" | no | yes | no |
HTML's <link rel=stylesheet> |
"style" | yes | yes | |
Header Link: <url>;rel=stylesheet |
"style" | no | no | no |
CSS' @import | "style" | yes | no | no |
<?xml-stylesheet> (with CSS) |
"style" | no | yes | |
HTML's <track> |
"track" | yes | yes | |
HTML's <video> element |
"video" | yes | yes | no |
Worker (classic script) | "worker" | yes | yes | |
Worker (module script) | "worker" | no | yes | no |
<?xml-stylesheet> (with XSLT) |
"xslt" | yes | yes | |
ECMAScript import declaration | (variable) | no | yes | no |
ECMAScript dynamic import() | (variable) | no | yes | no |
HTML's <link rel=preload> |
(variable) | no | yes | |
Header Link: <url>;rel=preload |
(variable) | no | yes | no |
HTML's <link rel=modulepreload> |
(variable) | no | yes | no |
Header Link: <url>;rel=modulepreload |
(variable) | no | yes | no |
HTML's download="" | "" | yes | unnecessary | no |
"Save Link As..." UI | "" | yes | unnecessary | no |
navigator.sendBeacon() | "" | yes | unnecessary | yes |
EventSource | "" | yes | unnecessary | no |
HTML's <a ping=""> |
"" | yes | unnecessary | no, but optional |
HTML's <area ping=""> |
"" | yes | unnecessary | no, but optional |
fetch() | "" | yes | unnecessary | yes |
XMLHttpRequest | "" | yes | unnecessary | no |
WebSocket | "" | yes | unnecessary | no |
Cache API | "" | yes | unnecessary | no |
HTML's manifest resource download | "" | no | yes | no |
HTML's manifest cache initialization | "" | no | yes | no |
HTML's <link rel=next> |
"" | no | unnecessary | no |
Header Link: <url>;rel=next |
"" | no | unnecessary | no |
HTML's <html manifest=""> |
"" | no | yes | |
HTML's <link rel=prefetch> |
"" | yes | unnecessary | yes |
Header Link <url>;rel=prefetch |
"" | no | no | no |
HTML's <link rel=prerender> |
"" | yes | unnecessary | no |
Header Link <url>;rel=prerender |
"" | no | no | no |
Additional request mechanisms with non-standard aspects:
/apple-touch-icon.png
resource- requests triggered during speculative parsing
- Web App Manifest icons