关于C#使用ssl证书(https)导致Token丢失无法获取的案例解析
- 2023-07-14
- 3357
- 飞驰的心
今天遇到一个很奇特的问题,我的网站项目架构是 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}}条{{rs.Msg_Content}}