我正在尝试使用servlet进行用户登录。我无法读取响应标头值。我在过滤器中添加了它。
Login.html: -
<div class="container">
<form class="form-signin" id="loginForm" name="loginForm"
action="/JerseyPageRedirection/login/RedirectDemo" method="post" onsubmit="pwd_handler(this);">
<div class="errmsg text-center"></div>
<label for="inputEmail">Email address</label> <input type="email"
id="emailId" class="form-control" name="emailId"
placeholder="Email address" required autofocus> <br> <label
for="inputPassword">Password</label> <input type="password"
id="password" class="form-control" name="password"
placeholder="Password" required>
<input type="hidden" name="epassword" value="" /><br>
<button type="submit" class="btn btn-lg btn-primary btn- block">Sign in</button>
</form>
</div>
<script>
function pwd_handler(form)
{
if (form.password.value != '')
{
form.epassword.value = window.btoa(form.password.value);
form.password.value = '';
}
}
</script>
web.xml: -
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>JerseyPageRedirection</display-name>
<welcome-file-list>
<welcome-file>login.html</welcome-file>
</welcome-file-list>
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>org.redirect.demo.RequestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>LoginService</servlet-name>
<servlet-class>org.redirect.demo.RedirectDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginService</servlet-name>
<url-pattern>/login/*</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.redirect.demo.RequestFilter</listener-class>
</listener>
</web-app>
LoginFilter(过滤器): -
public class RequestFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest srreq, ServletResponse srresp,
FilterChain ch) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) srreq;
if(request.getRequestURI().contains("main.html")){
HttpServletResponse response = (HttpServletResponse)srresp;
response.setHeader("Authorization", "Hello user");
ch.doFilter(srreq, response);
}else{
ch.doFilter(srreq, srresp);
}
}
@Override
public void init(FilterConfig fc) throws ServletException {
}
}
LoginServlet: -
public class RedirectDemo extends HttpServlet {
private static final long serialVersionUID = -8230594616794095241L;
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.sendRedirect("../main.html");
}
}
重定向请求和响应标头后: -
现在我想使用javascript阅读授权标题。有些人帮我阅读授权标题。
main.html: -
<html>
<head>
<meta charset="UTF-8">
<title>main</title>
</head>
<body>
<script>
console.log(window);
//Here need to read ResponseHeader
</script>
<p>Hello main page</p>