NetCore3.1中HttpClient的一个小问题
Posted codingye
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NetCore3.1中HttpClient的一个小问题相关的知识,希望对你有一定的参考价值。
我在使用HttpClient请求接口时,发生了一些双标性问题。情况是这样的:
1.我接口域名为file_local.sxkid.com,这是一个包含下划线的域名,请求之后如下:
我用了https,这个请求报了 SSL证书验证不通过的错误,然后我采取B策略,接着看;
2.我接口域名依然为file_local.sxkid.com,这次我使用http而非https,情况如下:
这个请求报了 SSL证书验证不通过的错误,奇怪了吧!我们接着看;
3.我接口域名改为file.sxkid.com,这次不包下划线(注:我域名依然和file_local.sxkid.com指向同一个服务):
可以看到接口不SSL验证错误了,"0"是接口的正确返回,所以这次是通过的,我在此猜想,可能是dotnetcore对域名的下划线做了特殊处理,所以我加多了一组实验,往下看;
4.我把file_local.sxkid.com中的下划线去掉变为filelocal.sxkid.com:
可以看到,虽然是https,但是证书也验证通过了,所以我基本可以确定这里应该是dotnetcore的一个bug了。清晰的对比如下:
http + 带下划线的域名:进行ssl证书校验,what?
https + 带下划线的域名:进行ssl证书校验,正常。验证不通过,what?
https + 不带下划线的域名:进行ssl证书校验,正常。验证通过,正常。
以上是关于NetCore3.1中HttpClient的一个小问题的主要内容,如果未能解决你的问题,请参考以下文章
System.Net.Http.HttpClient 在 .net 核心和 .net 框架中的行为不同
使用 System.Net.Http.Json 简化 HttpClient 的使用