首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭HttpOnly弹簧引导

关闭HttpOnly弹簧引导
EN

Stack Overflow用户
提问于 2014-03-15 18:50:34
回答 3查看 24.9K关注 0票数 18

我想关闭HttpOnly会话,我认为这是Spring的默认设置。我如何在春季启动时关闭HttpOnly?

我目前有代码,如:

代码语言:javascript
复制
@RequestMapping(value = "/stuff", method = GET)
public @ResponseBody
myObject doStuff(HttpSession session)
{
        session.setAttribute("foo", "bar");
        return  new MyObject();
}

这将在HTTP调用上返回响应头:

代码语言:javascript
复制
Set-Cookie: JSESSIONID=D14846D9767B6404F1FB4B013AB66FB3; Path=/; HttpOnly 

注意HttpOnly标志。我想关掉它。我怎样做呢?

附带注意:是的,我知道httpOnly是一个安全特性,通过关闭它,javascript可以访问我的cookie,即XSS。

此外,除了默认配置之外,我没有任何配置。

代码语言:javascript
复制
@ComponentScan
@EnableAutoConfiguration
public class WebApplication {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(WebApplication.class);
        app.run(args);
    }
}
EN

回答 3

Stack Overflow用户

发布于 2014-06-12 15:10:01

与适合spring引导的公认答案相比,另一个替代方法是覆盖EmbeddedServletContainerCustomizer的自定义方法。

首先,实现接口:

代码语言:javascript
复制
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application implements EmbeddedServletContainerCustomizer

然后为customize方法添加一个覆盖:

代码语言:javascript
复制
@Override
public void customize(final ConfigurableEmbeddedServletContainer container)
{
    ((TomcatEmbeddedServletContainerFactory) container).addContextCustomizers(new TomcatContextCustomizer()
    {
        @Override
        public void customize(Context context)
        {
            context.setUseHttpOnly(false);
        }
    });
}

顺便说一句,我发现httpOnly根本不是为我设定的。因此,我不得不使用这个方法来打开httpOnly (很明显,上面的设置是'true')。

您还可以使用此方法来调整tomcat中的其他内容,例如为json打开gzip和展开max http headersize (在kerberos身份验证中,我需要这样做):

代码语言:javascript
复制
((TomcatEmbeddedServletContainerFactory) container).addConnectorCustomizers(new TomcatConnectorCustomizer()
{
    @Override
    public void customize(final Connector connector)
    {
        AbstractHttp11Protocol httpProtocol = (AbstractHttp11Protocol) connector.getProtocolHandler();
        httpProtocol.setMaxHttpHeaderSize(65536);
        httpProtocol.setCompression("on");
        httpProtocol.setCompressionMinSize(256);
        String mimeTypes = httpProtocol.getCompressableMimeTypes();
        String mimeTypesWithJson = mimeTypes + "," + MediaType.APPLICATION_JSON_VALUE;
        httpProtocol.setCompressableMimeTypes(mimeTypesWithJson);
    }
});
票数 15
EN

Stack Overflow用户

发布于 2019-07-12 13:05:21

代码语言:javascript
复制
server.servlet.session.cookie.http-only=false 

(财产更新)

参考https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

票数 11
EN

Stack Overflow用户

发布于 2016-11-18 15:09:46

至少在Spring >= 1.4上,它甚至更容易,只需使用以下属性:

代码语言:javascript
复制
server.servlet.session.cookie.http-only= # "HttpOnly" flag for the session cookie. configuration property.

正如正式文件中所记录的那样。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22428233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档