chrome浏览器下使用iframe禁用cookie的问题
项目中使用iframe嵌入了第三方系统页面,在chrome浏览器80版本后SameSite默认启用,导致嵌入的页面cookie被禁用,嵌入的页面Ajax请求无法携带cookie,导致请求失败。
解决思路:chrome只是禁止第三方的cookie,对于同源的请求是不禁用的,在这种情况下可以使用nginx进行第三方系统的请求代理,解决同源问题。
nginx示例配置如下:
#代理的第三方请求地址
upstream iframe_srver{
server 192.168.0.57:9010;
keepalive 5000;
}
server {
#本地服务(所属服务的服务器上)监听的端口及地址
listen 9010;
server_name 127.0.0.1;
client_max_body_size 256M;
#代理地址--第三方地址#
location / {
proxy_pass http://iframe_srver/;
##cookie所替换的路径
proxy_cookie_path / /;
##这里必须携带端口,否则转发会丢失端口,如果是80,443则可以去除
proxy_set_header Host $host:$server_port;
proxy_set_header Remote_Addr $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
在访问服务器上部署nginx,代理第三方服务地址后,iframe正常显示内容。