-
Notifications
You must be signed in to change notification settings - Fork 120
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proxy server implementation example needed #757
Comments
So generally speaking this should work. Can you produce an example of something that fails and explain how it fails? |
When a site contains JavaScript code, the returned response to the initiating client includes implicit JS links. The client attempts to fetch that content from the proxy, where it is not present. To address this, I need to modify the body of the response before returning it. First, I must decompress the body, change all implicit links to explicit links so they will be sent to my proxy, which will then redirect them to the destination website (direct access is not possible due to CORS). After these modifications, I will recompress the body and send it back to the client. This is only part of the problem. I also need to manage cookies, ensuring they are properly transferred in both directions. There may be other issues I haven't anticipated yet. While this is possible to implement, it will take a considerable amount of time. Therefore, I'm asking for any existing examples if someone has already written something similar. |
Ah, I see. So attempting to implement a proxy this way, without the cooperation of either the server or the client, is somewhere between very challenging and impossible. As you say, you need to do a substantial amount of rewriting of code to force it back to your proxy. Is there any reason that you should not ask the client to include you? Most HTTP clients support having a proxy configured, and in that case they'll route all requests through you, regardless of what the URL says. |
Hello,
I need a proxy server endpoint for my Vapor project. The goal is to get the endpoint, which will take a URL as a parameter, get the page of that URL, modify it, and return it to the user. I've searched for an example here and over the internet but had no luck. Can I get the fully working thing I am trying to do with async-http-client? I need to proxy a page with JS, Google authorization, so I need to forward cookies etc.
The only useful thing I have found was the implementation of the proxy for the different Swift serverside framework - Hummingbird. It also uses async-http-client and the author says, that the implementation in Vapor will look similar.
Well, I am not a pro but here is what I have at the moment:
Proxy Middleware:
HTTP.Response -> Vapor.Response:
Vapor.Request -> async-http-client.Request:
When I try to proxy the simple webpage with only HTML written - it works. But something more complicated fails.
If you have an example of how I can implement a working proxy for the modern websites, please share it with me.
Thanks.
The text was updated successfully, but these errors were encountered: