From 18b645506b3846a65943409646ffbd46bffd4241 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=9B=BD=E4=BC=9F?= <366193849@qq.com> Date: Wed, 4 Aug 2021 12:41:28 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A6=81=E7=94=A8cookie=EF=BC=8C=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E9=9D=9E=E5=9F=9F=E5=90=8D=E7=9A=84Destination?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FastGithub.Http/HttpClientHandler.cs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/FastGithub.Http/HttpClientHandler.cs b/FastGithub.Http/HttpClientHandler.cs index 8c489a4..1650649 100644 --- a/FastGithub.Http/HttpClientHandler.cs +++ b/FastGithub.Http/HttpClientHandler.cs @@ -40,6 +40,7 @@ namespace FastGithub.Http { Proxy = null, UseProxy = false, + UseCookies = false, AllowAutoRedirect = false, AutomaticDecompression = DecompressionMethods.None, ConnectCallback = async (context, cancellationToken) => @@ -146,19 +147,26 @@ namespace FastGithub.Http protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var uri = request.RequestUri; - if (uri != null && uri.HostNameType == UriHostNameType.Dns) + if (uri != null) { - var address = await this.domainResolver.ResolveAsync(uri.Host, cancellationToken); - var builder = new UriBuilder(uri) + var uriBuilder = new UriBuilder(uri) { - Scheme = Uri.UriSchemeHttp, - Host = address.ToString(), + Scheme = Uri.UriSchemeHttp }; - request.RequestUri = builder.Uri; - request.Headers.Host = uri.Host; + var domain = uri.Host; var context = request.GetRequestContext(); - context.TlsSniPattern = context.TlsSniPattern.WithDomain(uri.Host).WithIPAddress(address).WithRandom(); + context.TlsSniPattern = context.TlsSniPattern.WithDomain(domain).WithRandom(); + + if (uri.HostNameType == UriHostNameType.Dns) + { + var address = await this.domainResolver.ResolveAsync(domain, cancellationToken); + uriBuilder.Host = address.ToString(); + request.Headers.Host = domain; + context.TlsSniPattern = context.TlsSniPattern.WithIPAddress(address); + } + + request.RequestUri = uriBuilder.Uri; } return await base.SendAsync(request, cancellationToken); }