Ստուգել .NET-ի NO_PROXY կանոնները HttpClient.DefaultProxy.IsBypassed-ով
Թվարկե՛ք և՛ մերկ դոմենը, և՛ սկզբի կետով ձևը, երբ HttpClient-ը պետք է շրջանցի վստահված սերվերը երկուսի համար, ապա ստուգե՛ք IsBypassed-ը։
Ըստ HttpClient-ի փաստաթղթավորված միջավայրային վստահված սերվերի քաղաքականության՝ example.internal-ը և .example.internal-ը տարբեր կերպ են համընկնում։ Մերկ անունը ընտրում է մայր հոսթը, իսկ սկզբի կետով ձևը՝ նրա ենթադոմենները։
Եթե երկուսն էլ պետք է ուղիղ անցնեն, ներառե՛ք երկուսն էլ մեկնարկային միջավայրում․
export no_proxy='example.internal,.example.internal'
Միավորե՛ք դրանք նախատեսված գոյություն ունեցող շրջանցման ցանկի հետ։ Այն համակարգերում, որտեղ փոփոխականների անունները տարբերում են մեծ ու փոքր տառերը, .NET-ը նախ ստուգում է փոքրատառ վստահված սերվերի միջավայրի անունները, ապա՝ մեծատառերը, ուստի հին no_proxy-ն կարող է առաջնություն ստանալ NO_PROXY-ի նկատմամբ։
Հավելվածի ներսում լռելյայն ընտրիչը կարելի է ստուգել առանց նպատակակետին HTTP հարցում ուղարկելու․
foreach (var host in new[] {
"example.internal", "api.example.internal", "other.internal"
})
{
var uri = new Uri("https://" + host + "/");
Console.WriteLine($"{host}: bypass={HttpClient.DefaultProxy.IsBypassed(uri)}");
}
Հատվածն օգտագործում է System և System.Net.Http։ Եթե հավելվածը բացահայտ տրամադրել է այլ IWebProxy, ապա փոխարենը ստուգե՛ք մշակիչի իրական վստահված սերվերը։ Սահմանե՛ք ցանկալի միջավայրը նախքան լռելյայն վստահված սերվերի սկզբնավորումը։
Սրանք .NET-ի փաստաթղթավորված կանոններն են։ Նույն տողով curl-ի արդյունքը չի ապացուցում, որ մեկ այլ հաճախորդ ընտրել է նույն ուղին, և շրջանցման որոշումը դեռ պահանջում է ուղիղ ցանցային հասանելիություն։