网际飞扬

还记得年少时的梦么,醒不过来 便信以为真……

主题背景
本网站首发版本创建于1999年4月
网际飞扬
手机网站二维码

请使用手机扫描二维码,登录网站手机版。

关于C#使用ssl证书(https)导致Token丢失无法获取的案例解析

  • 2023-07-14
  • 2484
  • 飞驰的心

今天遇到一个很奇特的问题,我的网站项目架构是 asp.net MVC + VUE

网站今天部署了ssl证书,看似没什么问题,但后台发布内容的时候提示错误,跟踪错误后发现:后端没有正确的获取前端传来的Token,导致业务无法继续而报错。

然后深入分析了一下代码,这个网站项目获取token用的方法如下:


public static string GetHeaderKey(string K) {
    string result = null;
    NameValueCollection coll = HttpContext.Current.Request.Headers;
            if (coll == null) { return result; }
            String[] arr1 = coll.AllKeys;
            for (int i = 0; i < arr1.Length; i++)
            {
                if (arr1[i] == K){
                    result = coll.GetValues(arr1[i])[0];
                }
            }
    return result;
}
这个方法用了很多年,事实上也没什么问题,在http下可以正确获取Headers中的Token,但在https下就死活取不到值,我甚至把前端的vue代码也检查了一遍,最后解决方法如下——


用这条语句替换上述的方法:
Request.Headers["Token"]

这个语句是.NET MVC提供的标准方法,这个网站项目迭代了十多年,仍然有不少的功能用的是老旧方法实现,替换后故障解除,其实我也不知道老方法具体问题出在哪儿,既然替换了官方的标准方法,那就不纠结了。


本博客所有内容均为原创,原则上我不希望你转载。如特别喜欢而转载的话,请务必注明出处“网际飞扬 http://www.fayo.net” 否则本人闲来无事可能会把你误当成维权的靶子。

评论

验证码

全部评论

共{{commentCount}}条
  • {{i+1}}楼
    {{rs.Msg_Sender}}{{rs.Msg_Datetime}}

    {{rs.Msg_Content}}

播放器封面
  • 宠物精灵