新版本chrome浏览器带来的跨域请求cookie丢失问题

本文介绍了两种解决跨域问题的方法。首先是在谷歌浏览器中通过chrome://flags/禁用SameSite默认设置。其次,展示了在Spring Boot后端如何配置全局过滤器以允许所有源,并设置Cookie的SameSite属性为None,确保跨域请求的兼容性。

参考:https://www.jianshu.com/p/aa80ca97f877

解决办法一:
谷歌浏览器里面:
chrome://flags/
把SameSite by default cookies这个参数设置成disabled

解决办法二(后端代码配置):

参考:https://blog.youkuaiyun.com/sinat_36521655/article/details/104844667

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.web.http.CookieSerializer;
import org.springframework.session.web.http.DefaultCookieSerializer;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

import java.util.ArrayList;
import java.util.List;

/**
 * @author 作者 : 
 * @date 创建时间:
 * @version 1.0
 * @since JDK1.8
 * @Description 实现全局过滤器
 */
@Configuration
public class CorsConfig {
	
	private CorsConfiguration addcorsConfig() {
	    CorsConfiguration corsConfiguration = new CorsConfiguration();
	    List<String> list = new ArrayList<String>();
	    list.add("*");
	    corsConfiguration.setAllowedOrigins(list);
	    corsConfiguration.setAllowCredentials(true);
	    /*
	    // 请求常用的三种配置,*代表允许所有,也可以自定义属性(比如header只能带什么,只能是post方式等等)
	    */
	    corsConfiguration.addAllowedOrigin("*"); 
	    corsConfiguration.addAllowedHeader("*"); 
	    corsConfiguration.addAllowedMethod("*"); 	    
	    return corsConfiguration;
	  }
	
	@Bean
	public CorsFilter corsFilter() {
		UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
		source.registerCorsConfiguration("/**", addcorsConfig());
		return new CorsFilter(source);
	}
	
	/**
	 * 重点就是这里
	 * @return
	 */
	@Bean
    public CookieSerializer httpSessionIdResolver() {
        DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
        // 取消仅限同一站点设置
        cookieSerializer.setSameSite("None");
        cookieSerializer.setUseSecureCookie(true);
        return cookieSerializer;
    }
}

 

<think> 我们正在处理一个关于通过设置Chrome flags来解决问题的查询。根据用户提供的引用内容,特别是引用[1]和引用[4],我们可以总结出以下步骤: 1. **问题背景**:新版本Chrome浏览器(特别是80版本以后)增加了安全限制,阻止非安全上下文(如HTTP)向私有网络地址(如本地IP或内网IP)发起请求,导致CORS错误。 2. **解决方案**:通过修改Chrome的flags设置,禁用“Block insecure private network requests”选项。 具体步骤如下: - **步骤1**:在Chrome浏览器的地址栏中输入 `chrome://flags/` 并访问。 - **步骤2**:在搜索框(Search flags)中输入 `Block insecure private network requests`。 - **步骤3**:将默认的Default选项改为Disabled。 - **步骤4**:点击右下角出现的“Relaunch”按钮,重启浏览器。 这样设置后,浏览器将不再阻止非安全上下文向私有地址空间的请求问题可能会得到解决。 **注意**: - 这种方法仅适用于开发环境,因为禁用此安全策略会降低浏览器的安全性。在生产环境中,应使用HTTPS和正确的CORS配置。 - 如果问题仍然存在,请检查服务器端的CORS配置(如`Access-Control-Allow-Origin`等响应头)。 根据引用[3],新版本ChromeCookieSameSite属性默认设置为Lax,这可能导致请求Cookie丢失。如果问题涉及Cookie,可尝试在服务器端设置CookieSameSite属性为None并同时设置Secure(即仅通过HTTPS发送)。 **生成相关问题**: 1. 如何在生产环境中正确配置CORS以避免问题? 2. Chrome浏览器其他哪些flags设置可能影响请求? 3. 如何为内网服务配置HTTPS以解决问题? </think>### 通过设置Chrome Flags解决问题的方法 当遇到请求Chrome浏览器阻止时(特别是访问私有网络资源时),可通过修改Chrome实验性功能设置解决: #### 操作步骤: 1. **打开Chrome Flags页面** 在浏览器地址栏输入: ```url chrome://flags/ ``` 2. **搜索相关设置** 在搜索框输入关键参数: ``` Block insecure private network requests ``` 3. **修改设置值** 将默认值 **`Default`** 改为 **`Disabled`** ![设置修改示意图](https://example.com/chrome-flags.png) 4. **重启浏览器** 点击右下角出现的 **`Relaunch`** 按钮使设置生效 #### 注意事项: 1. **安全性警告** 此操作会降低浏览器安全级别,仅建议在开发环境使用[^1] - 生产环境应配置HTTPS和正确CORS头部 - 禁用此功能后,浏览器不再检查`local`地址空间的请求安全 2. **其他相关设置** 如需处理Cookie问题,可同时修改: ```url chrome://flags/#same-site-by-default-cookies ``` 设置为 **`Disabled`** 解决Cookie丢失问题[^3] 3. **浏览器版本要求** 此设置适用于Chrome 80+版本,主要解决错误提示: > "The request client is not a secure context and the resource is in more-private address space `local`" #### 备选方案: 当flags设置无效时,可尝试: 1. 启动Chrome时添加参数: ```bash chrome.exe --disable-web-security --user-data-dir=/tmp/chrome ``` 2. 对于DICOMweb等专业服务,配置服务器端CORS头部: ```nginx add_header 'Access-Control-Allow-Origin' 'http://11.21.1.120:8225'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; ``` > **重要提示**:此方法仅为临时解决方案,正式环境应通过配置HTTPS和服务器端CORS策略解决根本问题[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值