SpringBoot解决“此Set-Cookie标头未指定‘SameSite“届性,它默认为‘SameSite=Lax,必须为此SetCookie设置“SameSite=None“才能实现跨站点使用。
解释:
Same-site cookies 是一种安全措施,用于减少跨站点攻击(XSS)的风险。从Chrome浏览器版本80开始,默认情况下,设置为Lax模式,所有的第三方Cookies将只在请求发自同一站点时发送。这可以减少跨站点攻击,如CSRF(跨站请求伪造)。
解决方法:
- 如果你的应用不依赖第三方Cookies,你可以继续使用默认的SameSite=Lax。
- 如果你的应用需要接收第三方Cookies,你可以修改SameSite策略。可以将其设置为None,但这需要确保你的应用使用HTTPS并且能够处理跨站请求,因为在不满足这些条件的情况下,Cookies可能不会被发送。
在Spring Boot中,你可以通过以下方式设置SameSite属性:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.allowedHeaders("*")
.exposedHeaders("Set-Cookie")
.setAllowCredentials(true)
.maxAge(3600);
}
}
在上面的代码中,我们通过实现WebMvcConfigurer
接口,并覆盖addCorsMappings
方法来定制跨源资源共享(CORS)的行为。我们添加了对Set-Cookie头的暴露,这允许客户端接收到Cookies。
注意:在实际操作中,修改SameSite策略可能会影响应用的正常运行,因此在进行任何更改之前,请确保充分测试应用以确保不会引入新的安全问题。
评论已关闭