.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-ის შედეგი არ ამტკიცებს, რომ სხვა კლიენტმა იგივე მარშრუტი აირჩია, და გვერდის ავლის გადაწყვეტილებას კვლავ პირდაპირი ქსელური ხელმისაწვდომობა სჭირდება.