美文网首页
如何跨域名共享Cookie?

如何跨域名共享Cookie?

作者: fisher爱吃鱼 | 来源:发表于2020-02-07 23:22 被阅读0次

假设有一个博客服务,域名为 blog.abc.com,另有一个鉴权服务,域名为 login.abc.com,如何共享这两个域名的 Cookie,实现登陆功能呢?

总体来说,需要做如下两步操作:

  1. 服务端如何允许接收跨域名的请求(CORS),此处的服务端指鉴权服务端
  2. 客户端跨域名发送 Ajax 请求如何同时发送认证信息(比如 Cookie 信息),此处的客户端指浏览器端,既包括 blog.abc.com,也包括 login.abc.com

服务端如何允许接收跨域名的请求

  1. 打开 Startup.cs 文件,在 ConfigureServices 方法中添加如下代码:
    services.AddCors(options => options.AddPolicy("AllowCors", builder => builder.WithOrigins(new []{"blog.abc.com"}).AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials()));
  2. 在需要共享 CookieController 中:
  • Controller 类添加特性 [EnableCors("AllowCors")]
  • 登陆成功后返回给浏览器端的 Cookie 信息大致如下:
    var cookieOptions = new CookieOptions
    {
        HttpOnly = true,
        Secure = false,
        Domain = "abc.com",
        Path = "/",
        Expires = DateTime.Now.AddDays(7)
    };
    Response.Cookies.Append("uid", user.Uid, cookieOptions);
    Response.Cookies.Append("token", user.Token, cookieOptions);
    Response.Cookies.Append("uname", user.Uname, cookieOptions);
    

客户端跨域名发送 Ajax 请求如何同时发送认证信息

这个比较简单,主要是在退出登陆时需要将认证信息(Cookie)一并发送给鉴权服务,只需在 Ajax 请求中增加设置 xhrFields 即可:

$.ajax({
    type: 'DELETE',
    url: 'login.abc.com',
    xhrFields: { withCredentials: true }, // 发送凭据
    dataType: "json",
    success: function (response) {
    },
    error: function (error) {
    }
});

相关文章

  • 如何跨域名共享Cookie?

    假设有一个博客服务,域名为 blog.abc.com,另有一个鉴权服务,域名为 login.abc.com,如何共...

  • 子系统的跨站登录总结

    一 起因最近做子系统的跨站登录,方案有几种1 OAuth 2.0,可跨不同域名2 子域名共享cookie,只能子域...

  • php单点登录

    PHP不同域名cookie共享(单点登录实现原理) PHP使用P3P完成COOKIE跨域操作 实际实用中,类似的需...

  • cookie跨域共享

    问题描述 需要解决前端pc跟服务端(java),跨域后都能获取到同一个cookie。使用二级域名共享cookie有...

  • WebView问题

    1,跨域访问cookie 是什么域名(domain)? 域名级别规则 顶级域名 一级域名 二级域名 三级域名什么区...

  • 关于认证登录

    二级域名共享cookie实现单点登录 CAS单点登录流程

  • 同源策略及跨域访问方案

    同源与跨域 浏览器同源策略 允许跨源访问使用CORS: 是HTTP的一部分 如何解决跨域读取Cookie二级域名不...

  • ios上跨域设置cookie的问题

    原来设置cookie的时候,只是设置了子域名(例如m.abc.com),后来需要跨域(整个域名有效),就将NSHT...

  • 跨域

    同域 协议 域名 端口 为什么浏览器不支持跨域? cookie LocalStorageDom元素...

  • localstorage和cookie的跨域解决方案

    cookie跨域 业务场景 场景1: 同一个主域下边的跨域问题 百度www域名下边登录了,发现yun域名下面也自...

网友评论

      本文标题:如何跨域名共享Cookie?

      本文链接:https://www.haomeiwen.com/subject/qqxbxhtx.html