gpt4 book ai didi

java - URLRewrite 过滤器不适用于多部分表单

转载 作者:搜寻专家 更新时间:2023-11-01 00:52:31 25 4
gpt4 key购买 nike

我正在使用 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>

当我将 enctype="multipart/form-data" 添加到我的表单(使用 POST 方法 btw)时,问题就出现了。过滤器无法重写 url。

有什么办法可以解决这个问题吗?

最佳答案

如果您可以更改应用程序的源代码,您可以对其进行修改,以便您可以使用提取 JSESSIONID 的“参数”方法。默认情况下(至少在 Tomcat 上)JSESSIONID 不会在表单发布中传递,但您可以修改表单以包含它。例如,JSP 页面可能如下所示:

<form action="index.jsp" method="post">
<input type="hidden" name="JSESSIONID" value="${pageContext.session.id}"/>
<input type="submit"/>
</form>

或者,您可以尝试使用不同的条件从 session 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>

您还可以使用其他条件来检查 session ID 是否有效 (requested-session-id-valid),是否源自 cookie (requested-session-id-来自 cookie)或源自发布操作的 URL(requested-session-id-from-url)。

我不确定您使用的是哪个版本的 UrlRewriteFilter,但是如果您查看以下 URL 中的“永久重定向包含 jsessionid 的传入 URL。”示例,您会发现 JSESSIONID 不是像其他 POST/GET 参数一样的参数。

http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/guide.html

我强烈建议您同时使用 Firefox/Firebug 来检查您的 POST 请求和 header ,这样您就可以准确了解传递的内容。 (我敢肯定还有其他类似的工具也可以执行此操作,例如 Fiddler 2 等)。

关于java - URLRewrite 过滤器不适用于多部分表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7846063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com