Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-users] how to get the request header's specified field and add it to the URI?

hi,I found a class org.eclipse.jetty.server.Request,that can get the specified header.

And I wrote these codes to jetty-rewirte.xml, call you tell me how to correct these codes?

<Configure>
      <!-- rewrite by header options -->
      <Call name="addRule">
          <Arg>
            <New id="request" class="org.eclipse.jetty.server.Request" />
            <New class="org.eclipse.jetty.rewrite.handler.RewriteRegexRule">
            <Set name="regex">^/(.*)$</Set>
            <Set name="replacement">/<Ref id="request" ><Get name="header"><Arg>Hash</Arg></Get></Ref>/$1</Set>
            </New>
        </Arg>
      </Call>
</Configure>

Thank you!

On Sun, Aug 7, 2011 at 10:07 AM, zhiwei chen <zhiweik@xxxxxxxxx> wrote:
Thank you, Andrea.

This specified header is sent by nginx, I have many apps, and I want to do this on jetty server, is there another way to do this?


On Sat, Aug 6, 2011 at 7:36 PM, Andrea Sodomaco <andrea@xxxxxxxxxxx> wrote:
Hi,
why don't you use a fIlter?
Something like

public class HashFilter implements Filter {

   
     public void doFilter(ServletRequest request, ServletResponse response,
                       FilterChain nextFilter)
         throws ServletException, IOException
     {
        
    request.setAttribute("caucho.form.character.encoding","UTF-8");
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;

        String hash=req.getHeader("Hash");
        if (hash!=null)
            request.getRequestDispatcher("/"+hash+req.getRequestURI()).forward(req, res);
     
         nextFilter.doFilter(request, response);
    }
}


in web.xml

    <filter>
        <filter-name>hashFilter</filter-name>
        <filter-class>com.package.HashFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>hashFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>


bye
Andrea



On 6/08/11 1:14 PM, zhiwei chen wrote:
hi,all.
I give the specified request header to jetty server,how can I get this specified field and add it to the URI?

For example:
Request header:

GET /hello/test.txt HTTP/1.1
User-Agent: curl/7.21.3
Host: localhost
Accept: */*
Hash:234

As you can see,this request header has a specified field "Hash",the URI is "/hello/test.txt".

I want to rewrite this URI to "/234/hello/test.txt"(i.e.: the new URI is : /Hash/oldURI )

Jetty7 hasn't this class,so how should I get the specified request header field and rewrite the request URI?

Is jetty-rewirte.xml can do this? How to add this rule?

Thank you!


_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/jetty-users


_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/jetty-users




Back to the top