1
我正在閱讀一本關於Servlets的書籍進行審閱,並指出它會自動決定何時附加會話ID。我在整個網絡上看到了衝突的聲明。當cookies被阻止時,它會在多大程度上將會話ID附加到URL上,並且這將包括使用sendRedirect()。我指的是最新的版本。我已經在Oracle.com上檢查過JAVA文檔,但我不確定它們是否足夠近。我們是否仍然需要使用Servlet 3.0進行URL編碼(對於會話ID)
感謝:-)
我正在閱讀一本關於Servlets的書籍進行審閱,並指出它會自動決定何時附加會話ID。我在整個網絡上看到了衝突的聲明。當cookies被阻止時,它會在多大程度上將會話ID附加到URL上,並且這將包括使用sendRedirect()。我指的是最新的版本。我已經在Oracle.com上檢查過JAVA文檔,但我不確定它們是否足夠近。我們是否仍然需要使用Servlet 3.0進行URL編碼(對於會話ID)
感謝:-)
沒有,容器不具有智能檢測你,你寫入到輸出流的鏈接模板文本或字符串。
對於防爆,藉此示例代碼:
servletoutputStream.write("<form method=\"post\" action=\"/submit.jsp\");
在上面的代碼,你需要做的HttpServletResponse.encodeURL("/submit.jsp")
有在崗操作URL會話ID。
同樣,對於HttpServletResponse.encodeRedirectURL()
的API文檔說
java.lang.String encodeRedirectURL(java.lang.String url)
Encodes the specified URL for use in the sendRedirect method or, if encoding
is not needed, returns the URL unchanged. The implementation of this method
includes the logic to determine whether the session ID needs to be encoded in
the URL.Because the rules for making this determination can differ from those
used to decide whether to encode a normal link, this method is separated from
the encodeURL method.
All URLs sent to the HttpServletResponse.sendRedirect method should be run
through this method. Otherwise, URL rewriting cannot be used with browsers
which do not support cookies.
參考文獻: