如何解决如何在 localhost
在我的应用程序中,我使用以下解决方案向会话标头添加了安全标志:https://stackoverflow.com/a/16616225
我遇到了以下问题:
- 它在我部署到远程机器时工作。我可以连接到它,没问题!
- 它在我的本地不起作用,因为 http://localhost:7001 不再有效,我需要使用 HTTPS 连接(https://localhost:7001)。
问题是我能否启用或知道我正在本地部署并且我将使用 HTTP 连接而不是 HTTPS?比如写一个switch case,本地部署的时候不用HTTPS,部署到远程服务器的时候用HTTPS?
public class SecurityFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws servletexception {
}
@Override
public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) throws IOException,servletexception {
// wrap the response
HttpServletResponse response = new SecureCookieSetter((HttpServletResponse)res);
// touch the session,so that it is added to the response header
((HttpServletRequest)req).getSession();
response.setHeader("Set-Cookie","JSESSIONID=" + ((HttpServletRequest)req).getSession().getId() + ";Path=/");
HttpServletResponse response = (HttpServletResponse)res;
chain.doFilter(req,response);
}
@Override
public void destroy() {
}
}
<filter>
<filter-name>SecurityFilter</filter-name>
<filter-class>package.SecurityFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SecurityFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
解决方法
您可以依靠 request.getScheme() 来了解它是 HTTP 还是 HTTPS。
但是,更好的解决方案是让您的本地服务器采用 HTTPS 连接。这可以通过向本地域添加自签名证书来轻松完成。您可以转到此 site 并生成自签名证书。然后可以将其放置在 Web 服务器或应用程序服务器上。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。