新项目要嵌入之前的一个项目,而且该被嵌入项目之前提供给第三方使用,他们也是用的iframe。以前都是好的,但是现在发现要是iframe的地址和父级的地址不同源,项目登录时无法设置cookie。
一开始以为后端出问题了,后来换火狐、ie edge 都是可以的,并且其他人的Chrome也有可以用的。
并且接口设置cookie时提示:“this set-cookie didnot specify a "sameSite" attribute and was defaulted to "sameSite=Lax" and broke the same rules specified in the SameSiteLax value”。
从Chrome 51开始,浏览器的Cookie新增加了一个SameSite属性,用来防止CSRF攻击和用户追踪。
该设置当前默认是关闭的,但在Chrome 80之后,该功能默认已开启。
所以当你无法使用某些网站第三方登录功能的时候,请查看一下是否受到了该设置的影响。
对于使用者,快速解决方案:
方案1. 打开Chrome设置,将chrome://flags/#same-site-by-default-cookies禁用,然后重启浏览器。
package org.pentaho.platform.web.http.filters; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletResponse; public class SameSiteNoneFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { chain.doFilter(request, new SameSiteNoneHttpServletResponseWrapper((HttpServletResponse) response)); } @Override public void destroy() { } }
...
package org.pentaho.platform.web.http.filters; import java.io.IOException; import java.io.PrintWriter; import java.util.Collection; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; import javax.ws.rs.core.HttpHeaders; public class SameSiteNoneHttpServletResponseWrapper extends HttpServletResponseWrapper { private final HttpServletResponse response; public SameSiteNoneHttpServletResponseWrapper(HttpServletResponse response) { super(response); this.response = response; } @Override public void sendRedirect(String location) throws IOException { addSameSiteCookieAttribute(); super.sendRedirect(location); } @Override public void sendError(int sc) throws IOException { addSameSiteCookieAttribute(); super.sendError(sc); } @Override public void sendError(int sc, String msg) throws IOException { addSameSiteCookieAttribute(); super.sendError(sc, msg); } @Override public PrintWriter getWriter() throws IOException { addSameSiteCookieAttribute(); return super.getWriter(); } @Override public ServletOutputStream getOutputStream() throws IOException { addSameSiteCookieAttribute(); return super.getOutputStream(); } private void addSameSiteCookieAttribute() { Collection<String> headers = this.response.getHeaders(HttpHeaders.SET_COOKIE); boolean firstHeader = true; for (String header : headers) { // there can be multiple Set-Cookie attributes String flags; if (header.contains("Secure;")) { flags = "SameSite=None"; } else { flags = "Secure; SameSite=None"; } if (firstHeader) { this.response.setHeader(HttpHeaders.SET_COOKIE, String.format("%s; %s", header, flags)); firstHeader = false; continue; } this.response.addHeader(HttpHeaders.SET_COOKIE, String.format("%s; %s", header, flags)); } } }
web.xml
<filter> <filter-name>SameSite Filter</filter-name> <filter-class>org.pentaho.platform.web.http.filters.SameSiteNoneFilter</filter-class> </filter> <filter-mapping> <filter-name>SameSite Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
...
相关推荐
将指定网站上的 Cookie 恢复为旧版 SameSite 行为,下载之后将baidu.com改为自己需要设置的域名
SameSiteCookiesServiceCollectionExtensions.cs 解决 Chrome 等浏览器因为 SameSite 导致的问题。 使用方法参见:https://asdfg.blog.csdn.net/article/details/108514763
自Chrome 80以来,此扩展程序正在调整Cookie SameSite属性问题。 注意:此扩展名是实验性的。 特征 将SameSite属性添加到Magento会话cookie中。 对于3DS付款,付款网关倾向于通过POST将请求发送到基于Magento的网站...
)背景在2020年2月推出的Chrome 80中,Chrome会将未声明SameSite值的Cookie视为SameSite=Lax Cookie。 预计其他浏览器供应商将效仿Google的领导。 (请参阅此)。 如果您管理跨站点Cookie,则需要应用SameSite = ...
mac跨域问题: 在目录/Users/...打开chrome 输入 chrome://flags/ 搜索 SameSite by default cookies 找到SameSite by default cookies和Cookies without SameSite must be secure 将上面两项设置为 Disable
Chrome 这几天发布的 80 版本更新了 “Same Site Cookie” 的安全特性 下面是一篇介绍文章 ...这个特性会导致: ...如果网站需要跨域分享数据,则设置相关cookie的samesite属性为none 作者:深入浅出0
对Chrome的更改意味着我们必须默认禁用Cookie才能禁用SameSite,以便在本地运行该项目。 去做这个; 在Chrome中访问: chrome:// flags / 默认情况下将SameSite Cookie更改为“已禁用” Elasticsearch和MongoDB ...
:warning: 禁用chrome samesite进行测试: chrome:// flags /#same-site-by-default-cookies docker-compose.yml(docker平台) # # start docker docker-compose up --detach --build # # stop docker docker-...
语言:中文 (简体) 一键开启预发布 0.0.3版本解决了chrome 80后cookie sameSite Scure的问题
如果您使用的是Chrome浏览器,请转到:chrome:// flags并禁用“没有SameSite的Cookie必须安全”。 出于某些愚蠢的原因,chrome在.local域上强制执行此操作。 FireFox足够聪明,不会将其搞砸。 约定和布局 我们的...
)5.3.5新网站设计兼容错误修复5.3.4新网站设计支持5.3.3 Chrome 80.x兼容,Samesite支持5.3.2组织不需要的可用性(标签)扩展5.3.1更改设计要从Chrome工具栏图标设计5.3.0新猎犬实验5.2.10新功能β版本联系准备...
全面的Chrome支持(SameSite = None) 要求 具有以下路由的完全设置的jwt身份验证服务器(如 ) 路线 方法 论点 标头 回复 /登录 邮政 邮箱密码 -- ([ 'success' => true, 'message' => 'auth successful', '...
如果Google Chrome版本> = 84,则需要使用Secure和SameSite=None更改exhentai.org cookie, 屏幕截图 用法 由于浏览器(cors)中的webSecurity,我们无法直接访问exhentai图像,因此,在使用该网站之前,您应该登录...
语言:English ... 在“转换体验”内部以及可视化编辑器的一部分中,体验设置的质量保证和设计过程中...由于我们协助iframe,x-header和SameSite Cookie的设置,因此将您正在使用的域和子域列入白名单可让您在应用程序编辑
它执行以下操作: 删除所有x-frame-options响应标头删除所有content-security-policy响应标头更改所有set-cookie响应标头以设置SameSite=None (这也需要为cookie设置Secure标志) 如果sec-fetch-dest请求标头等于...
// @ini_set('session.cookie_samesite','none'); // @ini_set('session.cookie_secure',true); 1.2V. 现在它可以监控您的计算机空闲时间并自动更改状态。 您可以在扩展选项中更改。 1.1V. Autologin也支持。...
该工具可识别哪些资源不受Google Chrome中启用的默认保护(跨域读取阻止,SameSite Cookie),并且可以跨站点嵌入。 结果将添加到Chrome的DevTools“ Spectroscope”面板中,并包含安全建议,以帮助保护您的资源免受...
Previously, we released versions of this extension for both Chrome and Firefox that share the same code base, so that functionality and user experience will be very similar between those two browsers...
Shift your site into overdrive with ComponentOne Studio® for ASP.NET Wijmo. What's Inside? Charts: Composite GridView ReportViewer Grids Charting Reporting Gauges Scheduling Navigation Input ASP...