5

Tôi đang sử dụng bộ lọc tuckey URLRewrite có một quy tắc của nó như sau:lọc URLRewrite không làm việc với hình thức nhiều phần dữ liệu

<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> 

Vấn đề nảy sinh ngay sau khi tôi thêm enctype="multipart/form-data" mẫu của tôi (trong đó sử dụng phương thức POST btw) . Bộ lọc không thể ghi đè url.

Bất kỳ ý tưởng nào về cách giải quyết vấn đề này?

+0

Bạn gặp phải loại lỗi nào? – Kraylog

+0

từ cụm từ thông dụng không khớp và quy tắc viết lại không hoạt động –

+0

Vấn đề của bạn là bạn không thể truy xuất các trường nhập liệu qua POST? – kamaci

Trả lời

1

Nếu bạn có thể thay đổi nguồn của ứng dụng bạn có thể sửa đổi nó để bạn có thể sử dụng phương pháp "tham số" để trích xuất JSESSIONID. Theo mặc định (ít nhất là trên Tomcat) JSESSIONID sẽ không được chuyển qua bài đăng biểu mẫu nhưng bạn có thể sửa đổi biểu mẫu của mình để bao gồm nó. Ví dụ: trang JSP có thể trông giống như sau:

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

Hoặc bạn có thể thử và tìm nạp JSESSIONID từ cookie phiên bằng cách sử dụng điều kiện khác. Tôi chưa thử như sau nhưng hãy tưởng tượng một cái gì đó như nó có thể làm việc cho bạn:

<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> 

Có những điều kiện khác bạn có khả năng có thể sử dụng để kiểm tra xem id phiên là hợp lệ (yêu cầu phiên-id-hợp lệ) , có nguồn gốc từ một cookie (được yêu cầu-phiên-id-từ-cookie) hoặc có nguồn gốc từ URL của hành động đăng (yêu cầu-phiên-id-từ-url).

Tôi không chắc bạn đang sử dụng phiên bản UrlRewriteFilter nào nhưng nếu bạn xem "Chuyển hướng vĩnh viễn URL đến chứa jsessionid." ví dụ tại URL sau, bạn sẽ thấy JSESSIONID không phải là tham số như Các tham số POST/GET là.

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

Tôi rất có thể khuyên bạn sử dụng Firefox/Firebug với nhau để xem xét yêu cầu POST và tiêu đề của bạn để bạn có được một ý tưởng chính xác những gì đang được thông qua. (Tôi chắc rằng có những công cụ tương tự khác cũng làm được điều này, Fiddler 2, vv).

Các vấn đề liên quan