Woj*_*zyk 5 java forms multipart url-rewriting tuckey-urlrewrite-filter
我正在使用tuckey URLRewrite过滤器,其规则如下:
<rule>
<name> Proxy URL with jession ID's </name>
<note>
</note>
<condition type="parameter" name="ParamName">[\p{ASCII}]+</condition>
<from>^/([^?]*)\.htm(.*)$</from>
<to type="proxy">%{request-url};jsessionid=%{parameter:ParamName}$2</to>
</rule>
Run Code Online (Sandbox Code Playgroud)
一旦我添加enctype="multipart/form-data"到我的表单(使用POST方法顺便说一句),问题就出现了.过滤器无法重写URL.
任何想法如何解决这个问题?
如果您可以更改应用程序的源,则可以对其进行修改,以便可以使用提取 JSESSIONID 的“参数”方法。默认情况下(至少在 Tomcat 上),JSESSIONID 不会在表单发布中传递,但您可以修改表单以包含它。例如,JSP 页面可能如下所示:
<form action="index.jsp" method="post">
<input type="hidden" name="JSESSIONID" value="${pageContext.session.id}"/>
<input type="submit"/>
</form>
Run Code Online (Sandbox Code Playgroud)
或者,您可以尝试使用不同的条件从会话 cookie 中获取 JSESSIONID。我没有尝试过以下方法,但想象类似的方法可能对您有用:
<rule>
<name>Proxy URL with jsession ID's</name>
<note></note>
<condition type="cookie" name="JSESSIONID"/>
<from>^/([^?]*)\.htm(.*)$</from>
<to type="proxy">%{request-url};jsessionid=%{cookie:JSESSIONID}$2</to>
</rule>
Run Code Online (Sandbox Code Playgroud)
您还可以使用其他条件来检查会话 ID 是否有效 ( requested-session-id-valid )、是否源自 cookie ( requested-session-id-from-cookie ) 或源自 post 操作的 URL (请求的会话 ID 来自 url)。
我不确定您使用的是哪个版本的 UrlRewriteFilter,但是如果您查看以下 URL 中的“永久重定向包含 jsessionid 的传入 URL。 ”示例,您将看到 JSESSIONID 不是像其他 POST/GET 参数那样的参数。
http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/guide.html
我强烈建议您同时使用 Firefox/Firebug 来检查您的 POST 请求和标头,以便您准确了解正在传递的内容。(我确信还有其他类似的工具也可以做到这一点,Fiddler 2 等)。
| 归档时间: |
|
| 查看次数: |
1814 次 |
| 最近记录: |