gpt4 book ai didi

HTML 资源不受 servlet 的限制

转载 作者:行者123 更新时间:2023-11-28 02:06:17 26 4
gpt4 key购买 nike

首先是一些细节:我在 web.xml 中配置了如下安全性查看 plaincopy 到剪贴板打印?

<login-config>  
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/formLoginPage.html</form-login-page>
<form-error-page>/formErrorPage.html</form-error-page>
</form-login-config>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>MyBeerApp</web-resource-name>
<url-pattern>/web/form.html</url-pattern>
<url-pattern>/SelectBeer.do</url-pattern>
<http-method>POST</http-method>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>member</role-name>
</auth-constraint>
<user-data-constraint>
<!--transport-guarantee>CONFIDENTIAL</transport-guarantee-->
</user-data-constraint>
</security-constraint>
<security-role>
<role-name>admin</role-name>
</security-role>
<security-role>
<role-name>member</role-name>
</security-role>
<security-role>
<role-name>guest</role-name>
</security-role>

在 tomcat-user.xml 中如下:查看 plaincopy 到剪贴板打印?

  <role rolename="member"/>  
<role rolename="guest"/>
<user username="vgarg2" password="tomcat" roles="member,guest" />
<user username="vgarg3" password="tomcat" roles="guest" />

文件位置如下:查看 plaincopy 到剪贴板打印?

<TOMCAT_HOME>\Beer-v1\index.html  
<TOMCAT_HOME>\Beer-v1\web\form.html
<TOMCAT_HOME>\Beer-v1\WEB-INF\web.xml
<TOMCAT_HOME>\Beer-v1\WEB-INF\classes\...

form.html 的内容:

查看 plaincopy 到剪贴板打印?

<html>  
<body>
<h1 align="center">Beer Selection Page</h1>
<form method="POST" action="../SelectBeer.do">
Select Beer Characteristics
Color : <select name="color1" size="1">
<option value="light1">Light</option>
<option value="amber1">Amber</option>
<option value="brown1">Brown</option>
<option value="dark1">Dark</option>
</select>
<br/>
Can sizes:
<input type="checkbox" name="sizes" value="12oz">12 oz</input>
<input type="checkbox" name="sizes" value="24oz">24 oz</input>
<input type="checkbox" name="sizes" value="36oz">36 oz</input>
<br/>
<center>
<input type="submit"/>
</center>
</form>
</body>
<html>

现在我的问题是去往“http://localhost:8080/Beer-v1/web/form.html”的请求没有受到限制。当我从/web/form.html 向“http://localhost:8080/Beer-v1/SelectBeer.do”提交请求时,它会检查身份验证并询问 ID/密码信息。

如果我禁用安全约束,应用程序可以正常工作。

这里出了什么问题?

最佳答案

我认为这里的问题是 http://localhost:8080/Beer-v1/web/form.html 的响应是从缓存中提供的。

如果您需要对静态页面进行身份验证,您应该发送缓存控制 header ,说明缓存实体不缓存响应。为此,您应该连同响应一起发送以下 header :

  • 缓存控制:无缓存,无存储
  • 用法:无缓存

注意:在不应用上述 header 的情况下,如果您使用 F5 刷新页面,您应该会看到身份验证有效。

我建议将所有需要身份验证的页面都作为 JSP。

关于HTML 资源不受 servlet 的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11306513/

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