Modify HTTP responses from a Chrome extension

google-chrome-extension, httpresponse, overriding

Solution

In general, you cannot change the response body of a HTTP request using the standard Chrome extension APIs.

This feature is being requested at 104058: WebRequest API: allow extension to edit response body. Star the issue to get notified of updates.

If you want to edit the response body for a known `XMLHttpRequest`, inject code via a content script to override the default `XMLHttpRequest` constructor with a custom (full-featured) one that rewrites the response before triggering the real event. Make sure that your XMLHttpRequest object is fully compliant with Chrome's built-in `XMLHttpRequest` object, or AJAX-heavy sites will break.

In other cases, you can use the `chrome.webRequest` or `chrome.declarativeWebRequest` APIs to redirect the request to a `data:`-URI. Unlike the XHR-approach, you won't get the original contents of the request. Actually, the request will never hit the server because redirection can only be done before the actual request is sent. And if you redirect a `main_frame` request, the user will see the `data:`-URI instead of the requested URL.

Problem

Is it possible to create a Chrome extension that modifies HTTP response bodies? I have looked in the Chrome Extension APIs, but I haven't found anything to do this.

Original source

Related problems