部署项目后Set-Cookies不生效,反复登录问题(已解决)

项目场景:

        部署KY-API开放平台。(线上,已部署ssl证书)

        项目介绍:提供 API 接口供开发者调用的平台,基于 Spring Boot 后端 + React 前端的 全栈微服务项目

        附开源链接

KY-0426/kyapi-backend (github.com)icon-default.png?t=N7T8https://github.com/KY-0426/kyapi-backend


问题描述

          点击接口详情,跳转登录页面。

          如下图所示:


原因分析:

set-cookies 不生效所导致的。就是跨域的问题   CORS


解决方案:

一、后端

springboot 修改application-prod.yml

server:
  servlet:
    session:
      cookie:
        max-age: 2592000
        domain: www.XXXXX.top (真实域名)
          # 这样写就跨域写入到 session 之中了
        same-site: none
          # 必须是 https 才能设置 可以用 Ohttps 配合 Nginx 实现
        secure: true

 springboot 添加 全局跨域配置  CorsConfig.java

二、前端

 打开 RequestConfig.ts

        1. 设置   withCredentials: true, 

        2. baseURL为后台https带域名网址。

三、NGINX

        修改/nginx/conf/nginx.config 文件

   添加

worker_processes 1;
events {
    worker_connections 1024;
}
http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;
    server {
        listen 443 ssl;
        server_name www.wenkaiyu.top;
        #填写证书文件绝对路径
        ssl_certificate cert/XXXX.pem;
        #填写证书私钥文件绝对路径
        ssl_certificate_key cert/XXXXXX.key;

        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 5m;
        #表示优先使用服务端加密套件。默认开启
        ssl_prefer_server_ciphers on;
# 现代TLS配置  
    ssl_protocols TLSv1.2 TLSv1.3; # 仅允许TLSv1.2和TLSv1.3  
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA'; # 推荐的加密套件  

    	location / {
            root /service/kyapi-frontend;
            index index.html index.htm;
            # 用于配合 browserHistory 使用
            try_files $uri $uri/index.html /index.html;
        }

        location /api {
		add_header 'Access-Control-Allow-Origin' '117.XX.XXX.XX';
        	add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept, Authorization, Accept-Language';
        	add_header 'Access-Control-Allow-Credentials' 'true';
        	add_header 'Access-Control-Allow-Methods' 'GET,POST,PUT,DELETE';
            rewrite ^/api/(.*) /$1 break;
         	 proxy_pass https://www.XXXXXX.top/api;
         	 proxy_set_header Host $host;  
       		 proxy_set_header X-Real-IP $remote_addr;  
       		 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
       		 proxy_set_header X-Forwarded-Proto $scheme;  
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }

    }
     server {  
        listen 80;  
        server_name www.XXXXXX.top;  
        # 将所有HTTP请求重定向到HTTPS  
        return 301 https://$server_name$request_uri;  


    }
 }

  修改完后  进入nginx 目录的 sbin 执行    ./nginx -s reload  让配置生效。

重新登录测试成功

 

参考文章

SpringBoot设置Cors跨域的四种方式 - 简书前言:CorsFilter / WebMvcConfigurer / @CrossOrigin 需要SpringMVC 4.2 以上的版本才支持,对应SpringBoot 1...icon-default.png?t=N7T8https://www.jianshu.com/p/b02099a435bd
服务器无法set-cookie · 语雀首先看看 login 接口对应的网络请求有没有 ⚠️,...icon-default.png?t=N7T8https://www.yuque.com/leikooo/wskip4/sa445dy75lve6iw1?singleDoc#

         我之前微信小程序登录问题        

微信小程序使用session(详细、亲测有效)_微信小程序 session-CSDN博客文章浏览阅读1.6k次,点赞5次,收藏8次。本文详细描述了解决微信小程序中session不唯一问题的步骤,包括获取登录请求的Set-Cookie,存储在本地缓存,以及如何在每次请求中加入Cookie。重点介绍了登录流程和如何确保会话一致性。https://blog.csdn.net/kaiyu0426/article/details/138078379 

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kaiyu0426

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值