最近在发布了基于 ASP.NET Core 实现的新版登录页面之后,陆陆续续地接到用户反馈登录时 Antiforgery Token 总是验证失败。

日志中记录的对应错误是

Antiforgery token validation failed. The required antiforgery cookie "xxx.Antiforgery" is not present.

今天在 QQ 浏览器中将内核模式设置为“总是使用 IE 内核”重现了问题,通过浏览器的开发者工具查看 cookie 情况,打开登录页时 antiforgery cookie 已发送给了浏览器,浏览器也正常接收到了 cookie ,但 ajax post 提交时,却没有带上 antiforgey cookie ,很是奇怪,我们并没有对 antiforgery cookie 进行特殊设置。

services.AddAntiforgery(options =>
{
options.Cookie.Name = ".xxx.Antiforgery";
});

后来在园子里找到一篇博文 QQ 浏览器兼容模式下 Cookie 失效导致的 ASP.NET Core Cookie 认证失效 ,才知道是 Cookie.SameSite 惹的祸。

查看 antiforgery cookie 的 samesite 值是 strict,原来 asp.net core 默认用的是 SameSiteMode.Strict ,改为 SameSiteMode.None 问题就解决了。

services.AddAntiforgery(options =>
{
options.Cookie.Name = ".XXX.Antiforgery";
options.Cookie.SameSite = SameSiteMode.None;
});

ASP.NET Core SameSite 设置引起 Cookie 在 QQ 浏览器中不起作用的更多相关文章

  1. 【新书推荐】《ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务》 带你走近微服务开发

    <ASP.NET Core 微服务实战>译者序:https://blog.jijiechen.com/post/aspnetcore-microservices-preface-by-tr ...

  2. ASP.NET Core 2.0使用Cookie认证实现SSO单点登录

    之前写了一个使用ASP.NET MVC实现SSO登录的Demo,https://github.com/bidianqing/SSO.Sample,这个Demo是基于.NET Framework,.NE ...

  3. ASP.NET Core如何设置请求超时时间

    如果一个请求在ASP.NET Core中运行太久,会导致请求超时,目前ASP.NET Core对请求超时的设置比较麻烦,本文列出目前收集到的一些方法,供大家参考. 部署ASP.NET Core到IIS ...

  4. ASP.NET Core 如何设置发布环境

    在ASP.NET Core中自带了一些内置对象,可以读取到当前程序处于什么样的环境当中,比如在ASP.NET Core的Startup类的Configure方法中,我们就会看到这么一段代码: publ ...

  5. 【转】ASP.NET Core 如何设置发布环境

    在ASP.NET Core中自带了一些内置对象,可以读取到当前程序处于什么样的环境当中,比如在ASP.NET Core的Startup类的Configure方法中,我们就会看到这么一段代码: publ ...

  6. Azure AD B2C(二)使用Azure AD B2C为ASP.NET Core 应用设置社交帐户(邮箱)登录/注册

    一,引言 上次关于Azure AD B2C 讲到一些概念,有介绍到,Azure AD B2C 也是一种身份验证的解决方案,但是它运行客户使用其首选的社交,企业或者本地账户标识对应用程序和API进行单一 ...

  7. 【ASP.NET Core】设置Web API 响应的数据格式——Produces 特性篇

    开春首文,今天老周就跟各位大伙伴们聊一个很简单的话题:怎么设定API响应的数据格式. 说本质一点,就是设置所返回内容的 MIME 类型(Content-Type 头).当然了,咱们不会使用在HTTP管 ...

  8. 【ASP.NET Core】设置 Web API 响应数据的格式——FormatFilter特性篇

    在上一篇烂文中老周已向各位介绍过 Produces 特性的使用,本文老周将介绍另一个特性类:FormatFilterAttribute. 这个特性算得上是筛选器的马甲,除了从 Attribute 类派 ...

  9. Asp.Net Core 自定义设置Http缓存处理

    一.使用中间件 拦截请求自定义输出文件 输出前自定义指定响应头 public class OuterImgMiddleware { public static string RootPath { ge ...

随机推荐

  1. 《大型网站技术架构》1:概述 分类: C_OHTERS 2014-05-07 20:40 664人阅读 评论(0) 收藏

    参考自<大型网站技术架构>第1~3章 1.大型网站架构演化发展历程 (1)初始阶段的网站架构:一台服务器分别作为应用.数据.文件服务器 (2)应用服务和数据服务分离:三台服务器分别承担上述 ...

  2. ITFriend创业阶段的服务器环境搭建手册

    创业阶段,进一步实践了Linux环境搭建和维护,下面是一些常用软件的搭建步骤和参考资料,仅供自己和诸位参考. 我个人还是比较倾向"一站式Web开发"的,自己想做点事,需要太多的技能 ...

  3. 图像数据的 normalization

    Normalization的方法 matlab 工具函数(三)-- normalize(归一化数据) 1. 加载指定标准差的噪声 im_clean = double(imread('Lena512.p ...

  4. Android菜鸟的成长笔记(27)——SurfaceView的使用

    前面有关自定义View中进行了绘图,但View的绘图机制存在如下缺陷: 1.View缺乏双缓冲机制. 2.当程序需要更新View上的图像时,程序必须重绘View上显示的整张图片. 3.新线程无法直接更 ...

  5. Codeforces Round #443 (Div. 2) C: Short Program - 位运算

    传送门 题目大意: 输入给出一串位运算,输出一个步数小于等于5的方案,正确即可,不唯一. 题目分析: 英文题的理解真的是各种误差,从头到尾都以为解是唯一的. 根据位运算的性质可以知道: 一连串的位运算 ...

  6. 详细回复某个CSDN网友,对我的文章和技术实力以及CSDN的吐槽

    貌似被大学生鄙视了,我也是醉了,现在的大学生水平和信心,都这么高了~ 看来,我得加把劲了~ o(︶︿︶)o 电子商务系列文章,是我闲来无事,分享自己的一些业余实践经验的文章.其中关于数据库设计的这一篇 ...

  7. shell脚本专题之-----------全自动编译安装mysql(免安装版)

    mysql的编译安装,在博客 开源服务专题之--------mysql的编译安装 中已经说明了,但是还是比较麻烦,尤其是一大堆命令,来手动执行,稍有不慎,就会出错.生产上一般都是先在本地测试环境进行自 ...

  8. TensorFlow 学习(五)—— Session

    A Session object encapsulates the environment in which Tensor objects are evaluated. 一个会话对象(session ...

  9. [02]基于webservice权限系统

    面前,我们已经介绍过.如何使用cxf建立webservice. 那我们要介绍的这款许可制度表结构. 此权限管理系统分为部门管理.员工管理.角色管理,权限管理,授权的人才和企业管理(这里不涉及) 角色管 ...

  10. Green the world :使用monkey_patch

    eventlet的monkey_patch 用于绿化一些python的模块,看看以下的样例就明确了 urls = ["http://www.haha.mx/joke/1292935" ...