请求因HTTP状态401失败:Unauthorized的原因?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请求因HTTP状态401失败:Unauthorized的原因?相关的知识,希望对你有一定的参考价值。

HTTP401错误原因:用户没有访问权限,需要进行身份认证。

任何客户端(例如您的浏览器),都需要通过以下循环:从站点的IP名称(即您站点的网址-URL,不带起始的‘http://')获得一个IP地址。这个对应关系(即由IP名称向IP地址转换的对应关系)由域名服务器(DNSs)提供。

打开一个IP套接字(socket)连接到该IP地址。通过该套接字写HTTP数据流。从Web服务器接受响应的HTTP数据流。该数据流包括状态编码,其值取决于HTTP协议。解析该数据流得到状态编码和其他有用信息。

该错误在以上所述的最后一步生成,即当客户端收到HTTP状态编码并识别其为401。浏览器接收到401错误信息之后,进行解释,提供一个对话框用于输入用户名/密码。在完成之后送交服务器。服务器验证之后,在验证通过的情况下把请求的资源送给浏览器,否则可能再送出401错误信息。

扩展资料:

相关错误码:

HTTP400-请求无效;

HTTP401.1-未授权:登录失败;

HTTP401.2-未授权:服务器配置问题导致登录失败;

HTTP401.3-ACL禁止访问资源;

HTTP401.4-未授权:授权被筛选器拒绝;

HTTP401.5-未授权:ISAPI或CGI授权失败。

参考资料来源:百度百科-401错误

参考技术A

401错误表示未经授权访问,即客户端发送的请求未被授权。

这通常是由于客户端未提供有效的凭据,或者提供的凭据不足以访问所请求的资源,在使用静态IP代理时,客户端发送的请求将通过代理服务器转发到目标服务器。

代理服务器需要提供有效的凭据以获得访问权限,如果代理服务器未提供有效的凭据或提供的凭据不足以访问所请求的资源,则会出现401错误。

使用静态IP代理发生401错误的原因(静态ip购买)

下面是一些可能导致静态IP代理出现401错误的原因:

1、代理服务器未提供有效的凭据:

如果代理服务器没有提供有效的凭据,例如用户名和密码,那么它将无法通过目标服务器的身份验证过程,因此,目标服务器将返回401错误。

2、代理服务器提供的凭据不足以访问所请求的资源:

有时,代理服务器提供的凭据可能不足以访问所请求的资源,这可能是因为所请求的资源需要更高级别的访问权限,或者代理服务器提供的凭据已过期。

3、静态IP代理被阻止:

某些目标服务器可能会阻止来自特定IP地址的请求,如果使用的静态IP代理的IP地址被目标服务器阻止,则会返回401错误。

4、静态IP代理已过期:

静态IP代理通常需要定期更新,如果代理已过期,那么它将无法通过目标服务器的身份验证过程,因此,目标服务器将返回401错误。

总之,在使用静态IP代理时,如果出现401错误,可能是由于代理服务器提供的凭据不足以访问所请求的资源,代理服务器未提供有效的凭据,代理服务器被阻止,或者静态IP代理已过期。

解决这些问题的方法可能包括更新代理凭据、检查代理服务器是否被阻止、更新静态IP代理等。

为啥我的 CORS 请求因 http 401 错误而失败

【中文标题】为啥我的 CORS 请求因 http 401 错误而失败【英文标题】:Why does my CORS request fail with http 401 error为什么我的 CORS 请求因 http 401 错误而失败 【发布时间】:2020-03-28 20:32:22 【问题描述】:

我正在使用 Javascript 中的 Fetch API 从跨域 apache 服务器(由我控制)获取图像,但出现以下错误:

SEC7120:[CORS] 源“http://origin.com”在跨域资源 cross-origin.com/....jpg 的 Access-Control-Allow-Origin 响应标头中找不到“http://origin.com”

HTTP401: DENIED - 请求的资源需要用户身份验证。 (Fetch)GET cross-origin.com/….jpg

以下是创建请求对象以获取 jpg 的 javascript:

var authb64 = btoa(\'' . $xrefrec['ftp_username'] . ':' .                                   $xrefrec['ftp_password'] . '\');
const request = new Request(document.getElementById(thm.photo_id).href,
                                \'Access-Control-Request-Headers\': \'Authorization\',
                                \'Options\': \'* HTTP/1.1\',
                                \'Authorization\': \'Basic \' + authb64,
                                \'Origin\': \'http://origin.com\',
                                \'Credentials\': \'include\',
                                \'Cache\': \'no-cache\',
                                \'Mode\': \'cors\',
                                \'Method\': \'GET\'
                            );

代码创建一个锚标记,将请求传递给 fetch(),然后等待 Promise 解析。

在服务器上,我在图片所在的目录下设置了一个 .htaccess 文件,如下:

AuthName "Client Only"
AuthType Basic
AuthBasicProvider dbm
AuthDBMUserFile "C:/Bitnami/wampstack-7.3.11-0/apps/.../conf/.htdbm-users"
Require user (valid user id)
RewriteRule ^/(clientgalleries).*$/ $1 
Header set Access-Control-Allow-Methods "GET,OPTIONS"
Header set Access-Control-Allow-Credentials "true"
Header set Cache-Control no-cache
Header set Access-Control-Allow-Headers "Authorization,Access-Control-Allow-Origin"
Header set WWW-Authenticate: Basic
Header set Access-Control-Allow-Origin "http://origin.com"

【问题讨论】:

如果有人能帮我解决这个问题,我们将不胜感激。 【参考方案1】:

如果我理解正确,您正在尝试从未知域(您尚未共享它 - 没关系)向 origin.com 发出 CORS 请求。这是正确的吗?

您的 JavaScript 代码无法更改 Origin 标头。例如,如果您有来自 A.com 的 javascript 请求来自 B.com 的图像,则 B.com 必须在其 Access-Control-Allow-Origin 标头中允许 A.com

【讨论】:

不,我正在从 origin.com 向 cross-origin.com 发出 cors 请求。 我应该补充一点,对 fetch() 的调用会引发异常,从而导致 401 错误。 然后反转域; cross-origin.com 必须在其 CORS 预检响应中使用适当的 Origin 白名单进行响应。 401 错误表明这不是 CORS,因为 CORS 是浏览器错误,不允许您发出 CORS 请求。 我可能没有说得很清楚,但是根据上面 .htaccess 中的最后一行,它是使用 Access-Control-Allow-Origin 标头响应的跨域服务器。跨度>

以上是关于请求因HTTP状态401失败:Unauthorized的原因?的主要内容,如果未能解决你的问题,请参考以下文章

请求因HTTP状态401失败:Unauthorized的原因?

为啥我的 CORS 请求因 http 401 错误而失败

业务数据提交失败,请重新确认(原因:纳税人核查接口调用异常(原因:(401)Unauthoriz

请求失败,HTTP 状态 401:未授权

Windows 服务在使用 System.Net.WebException 以 PDF 格式发送报告时失败:请求失败,HTTP 状态 401:未经授权

当我使用 asmx 服务和 s-s-rS 报告服务时,我收到“请求失败,http 状态 401:未授权”