在服务器端使用NTLM检查url

本文关键字:检查 url NTLM 服务器端 | 更新日期: 2023-09-27 18:05:30

我需要检查url是否存在并且可以到达。为了做到这一点,我发送Get请求并处理状态:

var httpClient = new HttpClient();
var response = httpClient.GetAsync(new Uri(pageUrl));
isPageAccessible = response.Result.StatusCode == HttpStatusCode.OK;

服务器使用NTLM进行认证。正如我在这里发现的那样,在获得成功OK状态之前有几个步骤(请求)。对于第一个请求,我得到401未授权状态,无法进行进一步操作。

总而言之,我如何在完成所有请求时使用NTML检查服务器上的url ?

在服务器端使用NTLM检查url

如果访问的是经过身份验证的服务器,则应该提供凭据。NTLM运行进程的凭据可以用HttpClient提供,如下:

var handler = new HttpClientHandler { 
                      Credentials = System.Net.CredentialCache.DefaultCredentials
                  };
var httpClient = new HttpClient(handler);
var response = httpClient.GetAsync(new Uri(pageUrl));

您将自己设置为失败,因为有许多原因导致请求可能无法返回200 OK响应。一种可能是响应没有内容204 No Content。另一种可能是请求只接受POSTPUT请求。正如您所发现的,另一种可能是它前面有一个身份验证系统401 Not Authorized。另一种可能是响应是重定向301 Moved Permanently302 Found。或者它可能在代理305, 306等后面。

确定URL是否真的存在的唯一方法是请求另一端证明它。谷歌这样做,Facebook这样做,Pinterest这样做,等等。他们这样做的方式是,他们要求发送方在他们的DNS中设置MX记录,或者在他们的index.html上使用他们生成的自定义令牌设置元标记。如果令牌存在,那么他们就是他们所说的那个人。

其他都不可靠