ResourceOverride icon indicating copy to clipboard operation
ResourceOverride copied to clipboard

Creating a completely custom response

Open LoganDark opened this issue 8 years ago • 5 comments

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

LoganDark avatar Jul 22 '17 02:07 LoganDark

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.

kylepaulsen avatar Jul 23 '17 11:07 kylepaulsen

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?

LoganDark avatar Jul 24 '17 03:07 LoganDark

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.

kylepaulsen avatar Jul 24 '17 03:07 kylepaulsen

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.

LoganDark avatar Jul 24 '17 03:07 LoganDark

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.

kylepaulsen avatar Jul 24 '17 03:07 kylepaulsen