• 解决新版谷歌Chrome浏览器Cookie跨域失效问题


            谷歌 Chrome80 在 2020年2月4号发布的版本(schedule)会逐渐屏蔽第三方Cookie,即默认为所有Cookie加上SameSite=Lax属性(Cookies default to SameSite=Lax),并且拒绝为不安全的Cookie设置SameSite=None属性(Reject insecure SameSite=None cookies),这样是为了从源头屏蔽跨站请求伪造CSRF(Cross Site Request Forgery)漏洞。

    解决方法

            方法一

                    通过部署第三方代理(例如nginx等)指定SameSite属性来解决跨域问题(前提:需要部署https)

    修改nginx配置文件

    1. server {
    2. listen 443 ssl;
    3. # 证书公钥文件路径
    4. ssl_certificate /xxx/xxx.pem;
    5. # 证书私钥文件路径
    6. ssl_certificate_key /xxx/xxx.key;
    7. location / {
    8. proxy_pass http://127.0.0.1:8080/;
    9. proxy_redirect default;
    10. proxy_cookie_path / "/; secure; SameSite=None";
    11. client_max_body_size 1000M;
    12. }
    13. ......
    14. }

            方法二

                    异构系统通过反向代理,配置成同域(URL的协议、域名和端口相同),然后通过nginx代理访问各系统

    nginx配置如下:

    1. #user root root;
    2. worker_processes 1
    3. events {
    4. worker_connections 1024;
    5. }
    6. http {
    7. include mime.types;
    8. default_type application/octet-stream;
    9. sendfile on;
    10. keepalive_timeout 65;
    11. server {
    12. listen 80;
    13. server_name localhost 192.168.1.3;
    14. location /a/ {
    15. proxy_pass http://192.168.1.1;
    16. proxy_set_header Host $host:$server_port;
    17. proxy_set_header X-Real-IP $remote_addr;
    18. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    19. client_max_body_size 100m;
    20. client_body_buffer_size 128k;
    21. proxy_connect_timeout 90;
    22. proxy_send_timeout 300;
    23. proxy_read_timeout 300;
    24. proxy_buffer_size 4k;
    25. proxy_buffers 4 32k;
    26. proxy_busy_buffers_size 64k;
    27. proxy_temp_file_write_size 64k;
    28. }
    29. location /b/ {
    30. proxy_pass http://192.168.1.2;
    31. proxy_set_header Host $host:$server_port;
    32. proxy_set_header X-Real-IP $remote_addr;
    33. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    34. client_max_body_size 100m;
    35. client_body_buffer_size 128k;
    36. proxy_connect_timeout 90;
    37. proxy_send_timeout 300;
    38. proxy_read_timeout 300;
    39. proxy_buffer_size 4k;
    40. proxy_buffers 4 32k;
    41. proxy_busy_buffers_size 64k;
    42. proxy_temp_file_write_size 64k;
    43. }
    44. error_page 500 502 503 504 /50x.html;
    45. location = /50x.html {
    46. root /usr/share/nginx/html;
    47. }
    48. }
    49. }

            方法三

                     对于http的系统,修改chrome安全策略

    1、打开chrome,输入

    chrome://flags/

    2、搜索

    SameSite by default cookies

    找到如下两项,并都设置为 Disable

    1. SameSite by default cookies
    2. Cookies without SameSite must be secure

    注意: Chrome 91 版本(2021年5月26日)更新后,默认已移除以下配置项,无法再通过此方案解决

  • 相关阅读:
    小程序中实现付款功能
    elasticsearch 自允许动创建索引
    力扣第44天----第1143题、第1035题、第53题
    windows server 华夏ERP部署手册
    【Linux】Vim的使用快捷方式
    Hive【Hive(四)函数-单行函数】
    wpf使用CefSharp.OffScreen模拟网页登录,并获取身份cookie
    井下特种兵——智能管网监测终端
    [操作系统笔记]处理机调度
    【前端实例代码】Html5+css3创建拟物风格昏昏欲睡的云朵动画网页效果~前端开发网页设计基础入门教程~适合初学者~超简单~
  • 原文地址:https://blog.csdn.net/zhiwenganyong/article/details/125452831