diff --git a/FastGithub.DomainResolve/DomainResolver.cs b/FastGithub.DomainResolve/DomainResolver.cs index 2dd894f..ee1d2a5 100644 --- a/FastGithub.DomainResolve/DomainResolver.cs +++ b/FastGithub.DomainResolve/DomainResolver.cs @@ -97,12 +97,6 @@ namespace FastGithub.DomainResolve throw new FastGithubException($"dns{dns}解析不到{domain}的ip"); } - // 不允许域名解析指向FastGithub自身造成消息死循环 - if (LocalMachine.ContainsIPAddress(address) == true) - { - throw new FastGithubException($"dns{dns}被污染,解析{domain}为{address}"); - } - this.logger.LogInformation($"[{domain}->{address}]"); return address; } diff --git a/FastGithub.Http/HttpClient.cs b/FastGithub.Http/HttpClient.cs index 2ff0389..910fb19 100644 --- a/FastGithub.Http/HttpClient.cs +++ b/FastGithub.Http/HttpClient.cs @@ -1,6 +1,9 @@ using FastGithub.Configuration; using FastGithub.DomainResolve; using System.Net.Http; +using System.Net.Http.Headers; +using System.Threading; +using System.Threading.Tasks; namespace FastGithub.Http { @@ -9,6 +12,11 @@ namespace FastGithub.Http /// public class HttpClient : HttpMessageInvoker { + /// + /// 插入的UserAgent标记 + /// + private readonly static ProductInfoHeaderValue userAgent = new(new ProductHeaderValue(nameof(FastGithub), "1.0")); + /// /// http客户端 /// @@ -28,5 +36,21 @@ namespace FastGithub.Http : base(handler, disposeHandler) { } + + /// + /// 发送请求 + /// + /// + /// + /// + public override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + { + if (request.Headers.UserAgent.Contains(userAgent)) + { + throw new FastGithubException($"由于{request.RequestUri}实际指向了{nameof(FastGithub)}自身,{nameof(FastGithub)}已中断本次转发"); + } + request.Headers.UserAgent.Add(userAgent); + return base.SendAsync(request, cancellationToken); + } } } \ No newline at end of file