Currently ProxyHandler just takes in the proxyUri to fetch and totally ignores the http request headers like "User-Agent".
This change passes on the HttpRequest object which has all the headers present in original request - Host and Content-Length header.
http://codereview.appspot.com/1987047/diff/4001/5001 File java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java (right): http://codereview.appspot.com/1987047/diff/4001/5001#newcode92 java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java:92: ProxyUriManager.ProxyUri proxyUri = proxyUriManager.process( Can the ProxyUri not store ...
15 years, 4 months ago
(2010-09-02 13:34:59 UTC)
#3
15 years, 4 months ago
(2010-09-07 01:20:50 UTC)
#4
http://codereview.appspot.com/1987047/diff/4001/5001
File
java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
(right):
http://codereview.appspot.com/1987047/diff/4001/5001#newcode92
java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java:92:
ProxyUriManager.ProxyUri proxyUri = proxyUriManager.process(
On 2010/09/02 13:34:59, Kuntal Loya wrote:
> Can the ProxyUri not store information about the original request - something
> like a ProxyRequest?
like we discussed, ProxyUri is a wrapper over the url that is getting proxied
through shindig. It is mostly independent of the request like http headers.
If we want to use http header information, HttpRequest object is more suited as
it has the whole http request and the container information as well.
http://codereview.appspot.com/1987047/diff/4001/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java File java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java (right): http://codereview.appspot.com/1987047/diff/4001/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java#newcode85 java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java:85: UriUtils.DisallowedHeaders.HOST); Why should the host be not copied? http://codereview.appspot.com/1987047/diff/4001/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java#newcode95 ...
15 years, 4 months ago
(2010-09-17 09:36:04 UTC)
#5
15 years, 3 months ago
(2010-09-28 09:32:52 UTC)
#7
http://codereview.appspot.com/1987047/diff/4001/java/gadgets/src/main/java/or...
File
java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
(right):
http://codereview.appspot.com/1987047/diff/4001/java/gadgets/src/main/java/or...
java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java:85:
UriUtils.DisallowedHeaders.HOST);
On 2010/09/17 09:36:04, Kuntal Loya wrote:
> Why should the host be not copied?
because if proxy request is example.org/gadgets/proxy?url=http://test.com/
then host header is "Host: example.org"
whereas we want to fetch http://test.comhttp://codereview.appspot.com/1987047/diff/4001/java/gadgets/src/main/java/or...
java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java:85:
UriUtils.DisallowedHeaders.HOST);
On 2010/09/21 07:22:07, Kuntal Loya wrote:
> On 2010/09/17 09:36:04, Kuntal Loya wrote:
> > Why should the host be not copied?
>
> Ah, got this one.
> Just add a few comments here as to what are we copying/not copying and why.
Done.
http://codereview.appspot.com/1987047/diff/4001/java/gadgets/src/main/java/or...
java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java:95:
HttpRequest rcr = buildHttpRequest(httpRequest, proxyUri,
proxyUri.getResource());
On 2010/09/17 09:36:04, Kuntal Loya wrote:
> Have httpRequest and tgt uri as the params.
Done.
http://codereview.appspot.com/1987047/diff/4001/java/gadgets/src/main/java/or...
java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java:160:
// response.setHeader("Content-Disposition", "attachment;filename=p.txt");
On 2010/09/17 09:36:04, Kuntal Loya wrote:
> unrelated change
Done.
15 years, 3 months ago
(2010-10-04 10:11:08 UTC)
#11
http://codereview.appspot.com/1987047/diff/25001/java/gadgets/src/main/java/o...
File
java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServlet.java
(right):
http://codereview.appspot.com/1987047/diff/25001/java/gadgets/src/main/java/o...
java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServlet.java:89:
+ host;
On 2010/10/01 08:56:28, Kuntal Loya wrote:
> Keep the same indentation as previous line.
Done.
http://codereview.appspot.com/1987047/diff/25001/java/gadgets/src/test/java/o...
File
java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java
(right):
http://codereview.appspot.com/1987047/diff/25001/java/gadgets/src/test/java/o...
java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java:95:
refresh, false, noCache, ContainerConfig.DEFAULT_CONTAINER, url,
Uri.parse(url));
On 2010/10/01 08:56:28, Kuntal Loya wrote:
> Why is url the gadget?
passing the gadget url as null throws NPE when converting proxyUri to Uri (or
doing toString) because the gadget url parameter of query params is set to null.
Since these tests set the gadget url as null and i had to set it to some non
null value, i though setting gadget url as the url itself would be okay.
The tests are not dependent on the gadget url anyways
http://codereview.appspot.com/1987047/diff/25001/java/gadgets/src/test/java/o...
java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java:151:
assertEquals(recorder.getHeader("Content-Type"), contentType);
On 2010/10/01 08:56:28, Kuntal Loya wrote:
> Can we verify if a header in proxyUriHttpRequest also exists in req?
Done.
http://codereview.appspot.com/1987047/diff/25001/java/gadgets/src/test/java/o...
java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java:422:
expect(pipeline.execute((HttpRequest) EasyMock.anyObject())).andReturn(resp);
On 2010/10/01 08:56:28, Kuntal Loya wrote:
> Why would this not be req?
Done.
http://codereview.appspot.com/1987047/diff/25001/java/gadgets/src/test/java/o...
java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java:422:
expect(pipeline.execute((HttpRequest) EasyMock.anyObject())).andReturn(resp);
On 2010/10/01 08:56:28, Kuntal Loya wrote:
> Why would this not be req?
Done.
http://codereview.appspot.com/1987047/diff/25001/java/gadgets/src/test/java/o...
File
java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyServletTest.java
(right):
http://codereview.appspot.com/1987047/diff/25001/java/gadgets/src/test/java/o...
java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyServletTest.java:55:
private final ProxyUriManager.ProxyUri proxyUri =
mock(ProxyUriManager.ProxyUri.class);
On 2010/10/01 08:56:28, Kuntal Loya wrote:
> have a HttpRequest proxyHttpRequest as well and use it for proxyHandler.fetch
Not needed anymore. Added a makeHttpRequestForProxyUrl method which does the
same thing.
http://codereview.appspot.com/1987047/diff/25001/java/gadgets/src/test/java/o...
java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyServletTest.java:82:
expect(request.getHeaders("Host")).andReturn(makeEnumeration("example.org"));
On 2010/10/01 08:56:28, Kuntal Loya wrote:
> why would request.getHeader("Host") return uri.getAuthority() while
> request.getHeaders("Host") return "example.org".
Nice catch. it was not getting tested anywhere, but made it consistent now.
I would argue that this break encapsulation. The idea is that ProxyHandler can be used ...
15 years, 3 months ago
(2010-10-04 17:31:26 UTC)
#14
I would argue that this break encapsulation.
The idea is that ProxyHandler can be used by other services not just
ProxyServlet (i.e. GadgetHandler).
So the ProxyHandler should handle any User-Agent value, and if needed to pass
more info down, then maybe ProxyUri is the place to change.
Issue 1987047: Forwarding all http request headers when fetching a resource via ProxyHandler
Created 15 years, 5 months ago by gagan.goku
Modified 15 years, 3 months ago
Reviewers: dev_shindig.apache.org, zhoresh
Base URL: http://svn.apache.org/repos/asf/shindig/trunk/
Comments: 38