Creating a completely custom response
for example responding to requests to an API endpoint with this exact response:
HTTP/1.1 200 OK
Date: Sat, 01 Jan 1970 00:00:00 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: expires=Sun, 00-Jan-81 00:00:00 GMT; path=/; domain=.example.com; HttpOnly
Allow: HEAD, OPTIONS, GET
Strict-Transport-Security: max-age=31536000; includeSubDomains
Via: 1.1 google
Alt-Svc: clear
Server: nginx
Resource override has a header rule that allows you to change request and response headers. Keep in mind that if you are trying to make a CORS request, the only headers the client can see are: Cache-Control, Content-Language, Content-Type, Expires, Last-Modified, and Pragma. See here: https://developers.google.com/web/updates/2015/03/introduction-to-fetch#response_types
Also I'm not sure why, but chrome doesn't seem to want to let extensions set the set-cookie header if the request was an ajax request. It works fine otherwise though.
No, I need (for example) Resource Override to modify the request itself and send it to another server, returning that request's response instead of the one the webpage tried to make
Does that make sense?
I'm not sure I understand the issue... A URL -> URL rule is a basic way to send a request to a different server than what the browser tried to send to.
This extension can also modify both request and response headers (when chrome allows it).
Or maybe you mean that you want a URL -> URL rule followed by custom response headers? In that case, don't forget to use the URL you redirected to as the match URL for the headers rule.
No. The URL -> URL rule sends a redirect request telling the browser to make a request to the intended destination.
However, CORS preflight does not respect this, and returns an error.
Right.. unfortunately with a cors request that also causes a preflight options request, I don't think there's much we can do. I was trying to get around this and debugging my extension's code and chrome seems to hide cors requests that cause preflight requests. My comment in https://github.com/kylepaulsen/ResourceOverride/issues/11 explains more about this.