首页 > 其他分享 >前后端分离中的 cookie 跨域问题

前后端分离中的 cookie 跨域问题

时间:2023-02-19 02:11:25浏览次数:35  
标签:Control 跨域 分离 验证码 Access 域名 Cookie cookie

背景

毕设项目的前后端分离改造,重写整个前端和后端接口

场景

  1. 获取登录验证码接口(后端生成)
  2. 登录接口(需要输入验证码)

1接口在返回前端 验证码图片 的同时,向响应头中写入了一个captchaOwner的 cookie,用于 验证码 与 验证码请求者 的匹配(服务器端则是被存在了redis中)

2接口在校验账户密码的同时,会接收这个captchaOwner cookie,并校验 与 redis 中存储的数据是否匹配 是否匹配

问题

获取不到这个 cookie

解决

经查阅资料,意识到这个 cookie,是会被响应后浏览器自动设置的,不需要额外的操作
但是仍然会存在 跨域问题,因为这个 cookie 是被设置在服务器域名(端口)下的
CORS请求默认不发送Cookie和HTTP认证信息。如果要把Cookie发到服务器,一方面要服务器同意,指定Access-Control-Allow-Credentials字段

response.setHeader("Access-Control-Allow-Credentials", "true");

//需要注意的是,如果要发送Cookie,Access-Control-Allow-Origin就不能设为星号,必须指定明确的、与请求网页一致的域名
response.setHeader("Access-Control-Allow-Origin", "http://localhost:3000");

同时前端 ajax 请求设置

        axios.get('http://localhost:8079/community/captcha', {
            responseType: "blob",
            withCredentials: true //这里

同时,Cookie依然遵循同源政策,只有用服务器域名设置的Cookie才会上传,其他域名的Cookie并不会上传,且(跨源)原网页代码中的document.cookie也无法读取服务器域名下的Cookie。

标签:Control,跨域,分离,验证码,Access,域名,Cookie,cookie
From: https://www.cnblogs.com/yaocy/p/17131902.html

相关文章

  • 前后端分离-跨域获取不到 cookie
    问题登录成功后,后端在响应头中添加了一个cookie,对应set-cookie字段,但是在前端的控制台却找不到摸索网上搜寻发现,还是因为跨域问题,这里的cookie并不是设置到前端项......
  • Nginx:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化
    引言一、性能怪兽-Nginx概念深入浅出二、Nginx环境搭建三、Nginx反向代理-负载均衡四、Nginx动静分离五、Nginx资源压缩六、Nginx缓冲区七、Nginx缓存机制八、Ngi......
  • 解决浏览器跨域问题
    解决浏览器跨域问题前后端分离的项目中,由于前端所运行的域名地址与后端常常不一致,在发送ajax时,我们常常会碰到跨域问题。这是浏览器制定的安全策略,浏览器跨域名请求数据......
  • PHP处理Ajax请求与Ajax跨域
    前端页面发送Ajax到服务端,服务端可以判断请求是否是Ajax请求,另外,对于跨域的Ajax请求,我们知道有JSONP方法,那服务器PHP该如何处理这些JSONP请求呢,以及如何处理不是jsonp请求的......
  • js实现一二级域名共享cookie
    前言最近接手的项目中,有人反馈了一个问题,说是在访问网站并登录后,登录成功有登录信息,但是刷新页面后重定向到了登录页面,让从新登录。打开goole调试页面,查看cookie时......
  • 介绍一款读写分离工具
    一、读写分离介绍1、What读写分离?基本的原理是让主数据库处理事务增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。2、why为何要读写分离?......
  • 前后端分离OAuth授权登录实现方式
    以码云作为OAuth的演示,码云OAuth的验证流程如下图:为了演示,需要先在码云上申请一个应用。在修改资料->第三方应用,创建要接入码云的应用。填写应用相关信息,......
  • OpenCV对NV12进行通道分离后缩放再保存为NV12格式
    1.OpenCV对NV12进行通道分离后缩放再保存为NV12格式 #include<stdio.h>#include<opencv2/opencv.hpp>/***@brief*把输入的NV12图像分离为YUV三个分量图......
  • 【HMS Core】音频编辑服务带你实现音源分离与合成
    ​1、介绍总览音频编辑服务(AudioEditorKit)是帮助开发者快速构建各类应用音频能力的服务。在本codelab中,您将学会创建一个DemoProject,了解如何使用音频编辑服务实现音......
  • nginx配置跨域
    nginx,server或location段添加:add_headerAccess-Control-Allow-Origin'*';add_headerAccess-Control-Allow-Credentials"true";add_headerAccess-Control-Allow-Me......