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的一个小问题的主要内容,如果未能解决你的问题,请参考以下文章

.Net Core HttpClient 摘要式身份验证

System.Net.Http.HttpClient 在 .net 核心和 .net 框架中的行为不同

使用 System.Net.Http.Json 简化 HttpClient 的使用

.NET HttpClient - 当响应标头的内容长度不正确时接受部分响应

接口-httpClient

使用Apache HttpClient实现多线程下载的小例子