解决cookie跨域访问_cookie 跨域

解决cookie跨域访问_cookie 跨域浏览器对于javascript的同源策略(请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议相同.)的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和b.cn是不同域),但是在前后端分离时我们经常会把服务端和前端放到不同域上,这时就需要跨域了.今天记录的是cookie的跨域访问。问题在此之前一直以为传统的服务器使用se…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

浏览器对于javascript的同源策略(请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议相同.)的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和b.cn是不同域),但是在前后端分离时我们经常会把服务端和前端放到不同域上,这时就需要跨域了.今天记录的是cookie的跨域访问。

问题

在此之前一直以为传统的服务器使用session保存用户信息的方案在前后端分离时不能使用,无法获取请求的状态。
后面经过了解发现http本身就是无状态的,传统的session保存法也是因为服务端生成一个id返回给客户端保存在cookie中,客户端请求数据时将其通过请求头发给服务端,服务端再通过id找到具体数据即可。因此再跨域时只需能操作cookie就可以使用session了。恰好XMLHttpRequest对象提供了跨域接口withCredentials:跨域请求是否提供凭据信息(cookie、HTTP认证及客户端SSL证明等)。


实现

设置withCredentials开启需要服务器同意同时需要在AJAX请求中打开withCredentials属性

  • 客户端
axios.defaults.withCredentials = true // 全局设置
axios.post('/kaptcha/getinspectKaptchaImage', { kaptcha: this.verify },{withCredentials:true}) // 局部设置
  • 服务端
/*在响应头中设置方法*/
Access-Control-Allow-Credentials: true // 设置响应头
/*koa中设置方法*/
app.use(cors({credentials:true})); // koa2中中间件cors设置

注意事项

  • 服务端在设置cookie时指定的域名为服务器所在域名
  • 需要关闭mockjs的模拟数据功能
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187022.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows vim配置_配置vim

    windows vim配置_配置vimwin10设置vim配置文件进入vim安装目录(C:\Development\Vim\),后打开_vimrc文件在文件末添加需要设置的内容 setnu”设置行号 setnobackup”不保存备份文件 setnoundofile”不保存undo文件 setlines=35columns=140”设置窗口大小 (持续更新)…

    2022年9月28日
    2
  • linux服务器部署kvm

    linux服务器部署kvm

    2021年6月3日
    113
  • 基于java的贪吃蛇游戏的设计与实现(贪吃蛇安卓游戏源码)

    一.前言某日,看见隔壁家的小朋友在玩一款网络爆款贪吃蛇游戏,感觉很好玩。自己刚好正在学习JAVA编程,也想实现一个类似功能的游戏Demo练手,在网上查看了不少源码案例,全都是很古老的方块式贪吃蛇游戏案例,没有想要的实现,因此自己动手实现一个JAVA版的贪吃蛇游戏。我在这个Dome完成之后重写了这个游戏的Android版,并重新更名为《蛇王传说》。也欢迎大家下载试玩。游戏下载地址:https…

    2022年4月18日
    78
  • java .foreach数组遍历_foreach遍历ArrayList和数组

    java .foreach数组遍历_foreach遍历ArrayList和数组遍历ArrayList的方式有迭代器,foreach循环,get(i)等方式。其中迭代器和get方法都有具体的代码可以看到。foreach循环是怎么实现的呢?下面通过反编译class的方式来看看JAVA是如何处理foreach遍历ArrayList、数组的。先说结论:foreach遍历list底层还是使用的迭代器;foreach遍历数组还是传统的i=0到i=length-1遍历,只是写法上封装成f…

    2022年7月22日
    22
  • pycharm TODO_pycharm中如何注释掉代码块

    pycharm TODO_pycharm中如何注释掉代码块pycharm中可以在#后面加TODO提示自己后续的开发动作。点击pycharm又下角的小标签,会弹出一个列表,选择TODO选项。 进入TODO选项,可以看见所以设置的TODO,选择一个TODO进行单击,可以跳到该TODO设置的位置。…

    2022年8月26日
    10
  • 华为上机练习题–姓名夫妻相「建议收藏」

    华为上机练习题–姓名夫妻相

    2022年1月30日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号