jetty transparent proxy always returns 403 forbidden

守給你的承諾、 提交于 2020-01-04 11:02:12

问题


I am trying to use the transparent proxy provided by jetty.

This is my web.xml

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="WebApp_9"
     version="2.4"
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>Archetype Created Web Application</display-name>

<servlet>
    <servlet-name>googleProxy</servlet-name>
    <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
    <init-param>
        <param-name>ProxyTo</param-name>
        <param-value>http://www.google.com</param-value>
    </init-param>
    <init-param>
        <param-name>Prefix</param-name>
        <param-value>/google</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>googleProxy</servlet-name>
    <url-pattern>/google/*</url-pattern>
</servlet-mapping>

and this is the pom.xml (I am using maven):

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>JettyProxySample</groupId>
<artifactId>JettyProxySample</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>JettyProxySample Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-servlets</artifactId>
        <version>7.0.0.M4</version>
    </dependency>
</dependencies>
<build>
    <finalName>JettyProxySample</finalName>
    <plugins>
        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>6.1.10</version>
            <configuration>
                <scanIntervalSeconds>10</scanIntervalSeconds>
                <stopKey>foo</stopKey>
                <stopPort>9999</stopPort>
            </configuration>
            <executions>
                <execution>
                    <id>start-jetty</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <scanIntervalSeconds>0</scanIntervalSeconds>
                        <daemon>true</daemon>
                    </configuration>
                </execution>
                <execution>
                    <id>stop-jetty</id>
                    <phase>post-integration-test</phase>
                    <goals>
                        <goal>stop</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

I expect the proxy to forward a request like this:

http://localhost:8080/JettyProxySample/google/search?q=hello

to this:

http://www.google.com/search?q=hello

But when I try that url in browser, I always get this:

HTTP ERROR: 403

FORBIDDEN
RequestURI=/JettyProxySample/google/search

Powered by Jetty://

Any idea?


回答1:


Just to toss an answer onto here, do not use a milestone release that is years old.

  • 7.6.7.v20120910 for jetty7
  • 8.1.7.v20120910 for jetty8

I know lots of folks using the proxy servlet in both versions successfully, just not something that was from the initial migrations from codehaus to eclipse...there was a serious amount of code churn back then so I would not be surprised if this isn't working correctly for you.




回答2:


Reading the source code helps. :)

The problem is, you don't have your proxy servlet set at the root of the web server, but inside of an application, thus your Prefix parameter needs to include the entire prefix, context-name of web application included...

Prefix/YOUR_WEB_APP_CONTEXT/google

see also



来源:https://stackoverflow.com/questions/13027679/jetty-transparent-proxy-always-returns-403-forbidden

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!