处理来自 Chrome 版本 > 85 的 HTTP 网站的 CORS Cookie

时间:2021-05-10 08:00:20

标签: reactjs spring spring-boot google-chrome cookies

我使用 React(端口 3000)和 Spring(端口 8080)创建了一个小型登录应用程序,它们都在同一台机器(本地主机)上运行,但端口不同。

由于 CORS 策略,浏览器拒绝了从前端到后端的 http 请求,因此我在 SpringBoot 后端应用程序中启用了 Cors 配置。

Cors 配置

s = df.LotSizeDimensions.str.strip('`"M ').str.upper()

df1 = s.str.split('X', expand=True).astype(float)
#general data
#df1 = s.str.split('X', expand=True).apply(lambda x: pd.to_numeric(x, errors='coerce'))
df['LotSize'] = np.where(s.str.count('X').eq(1), df1[0] * df1[1], 0)
print (df)
      LotSizeDimensions  LotSize
0          40.00X150.00   6000.0
1          57.00X130.00   7410.0
2          27.00X117.00   3159.0
3          37.00X108.00   3996.0
4          63.00X135.00   8505.0
5          65.00X134.00   8710.0
6          57.00X116.00   6612.0
7   33x124x67x31x20x118      0.0
8          55.00X160.00   8800.0
9          63.00X126.00   7938.0
10         36.00X105.50   3798.0

现在,我可以为“Access-Control-Allow-Methods”中提到的所有方法对后端进行 http 调用。

此外,一旦用户成功登录,我就会生成一个 cookie 并作为“Set-Cookie”标头的一部分发送到响应中,以便下次我将 cookie 作为 Cookie 标头的一部分接收。生成的cookie有以下配置,

a) sslSecure = false(因为我的网站将是一个 http 网站)

b) HttpOnly = true(出于安全原因/阻止 XSS 攻击)

c) sameSite = None(因为 CrossOrigin)

d) maxAge = 2 小时(浏览器中的 cookie 生存期)

看起来从 Chrome 85 版本开始,在 CORS 请求的情况下,只有当 sslSecure = true 和 sameSite = None 时,Cookie 才会发送到后端。

如何克服这个问题?由于我的网站不会包含任何敏感信息,我希望它是 http(将始终具有 sslSecure = false)而不是 https。

0 个答案:

没有答案