国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

403 Forbidden vs 401 Unauthorized HTTP 響應

這篇具有很好參考價值的文章主要介紹了403 Forbidden vs 401 Unauthorized HTTP 響應。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

問:

對于存在的網(wǎng)頁,但用戶沒有足夠的權限(他們沒有登錄或不屬于正確的用戶組),應該提供什么正確的 HTTP 響應?

401 Unauthorized? 403 Forbidden? 還有什么?

到目前為止,我所讀到的關于兩者之間的區(qū)別并不是很清楚。每個響應適合哪些用例?

答1:

huntsbot.com提供全網(wǎng)獨家一站式外包任務、遠程工作、創(chuàng)意產(chǎn)品分享與訂閱服務!

Daniel Irvine [original link] 的明確解釋:

401 Unauthorized 存在問題,這是身份驗證錯誤的 HTTP 狀態(tài)代碼。僅此而已:它用于身份驗證,而不是授權。接收到 401 響應是服務器告訴您,“您未通過身份驗證 - 根本未通過身份驗證或身份驗證不正確 - 但請重新進行身份驗證并重試。”為了幫助您,它將始終包含一個 WWW-Authenticate 標頭,用于描述如何進行身份驗證。這通常是由您的 Web 服務器返回的響應,而不是您的 Web 應用程序。這也是非常暫時的;服務器要求您再試一次。因此,對于授權,我使用 403 Forbidden 響應。它是永久性的,它與我的應用程序邏輯相關,并且它是比 401 更具體的響應。接收 403 響應是服務器告訴你,“對不起。我知道你是誰——我相信你所說的你是誰——但你只是沒有訪問此資源的權限。也許如果您很好地詢問系統(tǒng)管理員,您將獲得許可。不過在你的困境改變之前,請不要再打擾我了?!笨傊?,401 Unauthorized 響應應該用于缺少或錯誤的身份驗證,而 403 Forbidden 響應應該在之后使用,當用戶通過身份驗證但無權對給定資源執(zhí)行請求的操作時。

應該如何使用 http 狀態(tài)代碼的另一個nice pictorial format。

默認的 IIS 403 消息是“這是一個通用的 403 錯誤,意味著經(jīng)過身份驗證的用戶無權查看該頁面”,這似乎是同意的。

@JPReddy您的答案是正確的。但是,我希望將 401 命名為“未驗證”,將 403 命名為“未授權”。與身份驗證有關的 401 具有伴隨文本“未經(jīng)授權”的格式,這非常令人困惑......除非我的英語不好(這很有可能)。

@ZaidMasud,根據(jù) RFC,這種解釋是不正確的。 Cumbayah 的回答是正確的。 401 表示“您缺少正確的授權”。它意味著“如果你愿意,你可以嘗試驗證自己”。因此,未正確驗證自己的客戶端和未正確驗證的客戶端都將獲得 401。403 表示“無論你是誰,我都不會回答這個問題”。 RFC 明確指出,在 403 的情況下“授權將無濟于事”。

401是認證錯誤,403是授權錯誤。就那么簡單。

對于所有引用 RFC(很可能是 2616)的反對者,你們都錯了。正如@Idrut 在 answer 中指定的,“禁止意味著客戶端已成功驗證,但未授權?!薄K昧?RFC7231 和 RFC7235,它們 過時 RFC 2616。

答2:

保持自己快人一步,享受全網(wǎng)獨家提供的一站式外包任務、遠程工作、創(chuàng)意產(chǎn)品訂閱服務–huntsbot.com

編輯:RFC2616 已過時,請參閱 RFC7231 和 RFC7235。

401 未經(jīng)授權:

如果請求已包含授權憑證,則 401 響應表示已拒絕對這些憑證的授權。

403 禁止:

服務器理解請求,但拒絕執(zhí)行。

從您的用例來看,用戶似乎沒有經(jīng)過身份驗證。我會返回401。

謝謝,這有助于我澄清它。我正在使用兩者 - 401 用于未經(jīng)身份驗證的用戶,403 用于權限不足的經(jīng)過身份驗證的用戶。

我沒有投反對票,但我發(fā)現(xiàn)這個答案非常具有誤導性。 403 禁止更適合用于永遠不會提供的內(nèi)容(如 asp.net 中的 .config 文件)。它要么是那個,要么是 404。恕我直言,對于可以訪問但您沒有正確憑據(jù)的東西返回 403 是不合適的。我的解決方案是通過更改憑據(jù)的方式提供拒絕訪問消息。那個或401。

“響應必須包含一個 WWW-Authenticate 標頭字段(第 14.47 節(jié)),其中包含適用于所請求資源的質(zhì)詢?!比绻幌胧褂?HTTP 樣式的身份驗證,401 響應代碼似乎是不合適的。

我會在這里支持比利安德。該語句是“如果請求已包含授權憑據(jù)”。這意味著如果這是來自提供憑證的請求的響應(例如來自 RFC2617 身份驗證嘗試的響應)。它本質(zhì)上是允許服務器說,“錯誤的帳戶/密碼對,再試一次”。在提出的問題中,用戶可能已通過身份驗證但未授權。對于這些情況,401 絕不是適當?shù)捻憫?/code>

Billiand 是對的,401 僅適用于 HTTP 身份驗證。

答3:

huntsbot.com全球7大洲遠程工作機會,探索不一樣的工作方式

缺少其他答案的是,必須理解 RFC 2616 上下文中的身份驗證和授權僅指 RFC 2617 的 HTTP 身份驗證協(xié)議。HTTP 狀態(tài)代碼不支持通過 RFC2617 之外的方案進行身份驗證,因此不予考慮在決定是使用 401 還是 403 時。

簡明扼要

Unauthorized 表示客戶端未通過 RFC2617 身份驗證,服務器正在啟動身份驗證過程。 Forbidden 表示客戶端已通過 RFC2617 身份驗證并且沒有授權,或者服務器不支持請求資源的 RFC2617。

這意味著如果您有自己的滾動登錄過程并且從不使用 HTTP 身份驗證,則 403 始終是正確的響應,并且永遠不應使用 401。

詳細而深入

來自 RFC2616

10.4.2 401 Unauthorized 請求需要用戶認證。響應必須包含一個 WWW-Authenticate 頭字段(第 14.47 節(jié)),其中包含適用于所請求資源的質(zhì)詢??蛻舳丝梢允褂煤线m的授權頭域重復請求(第 14.8 節(jié))。

10.4.4 403 Forbidden 服務器理解請求但拒絕執(zhí)行。授權將無濟于事,并且不應重復請求。

首先要記住的是,本文檔上下文中的“身份驗證”和“授權”專門指 RFC 2617 中的 HTTP 身份驗證協(xié)議。它們不指您可能創(chuàng)建的任何滾動您自己的身份驗證協(xié)議使用登錄頁面等。我將使用“登錄”來指代通過 RFC2617 以外的方法進行的身份驗證和授權

因此,真正的區(qū)別不在于問題是什么,也不在于是否有解決方案。不同之處在于服務器期望客戶端下一步做什么。

401 表示無法提供資源,但服務器正在請求客戶端通過 HTTP 身份驗證登錄并已發(fā)送響應頭以啟動該過程??赡艽嬖谠试S訪問資源的授權,也可能沒有,但讓我們試一試,看看會發(fā)生什么。

403表示無法提供資源,對于當前用戶來說,無法通過RFC2617解決這個問題,也沒有嘗試的意義。這可能是因為已知沒有足夠的身份驗證級別(例如因為 IP 黑名單),但也可能是因為用戶已經(jīng)通過身份驗證并且沒有權限。 RFC2617 模型是一個用戶、一個憑據(jù),因此可以忽略用戶可能擁有第二組可以授權的憑據(jù)的情況。它既不暗示也不暗示某種登錄頁面或其他非 RFC2617 身份驗證協(xié)議可能有幫助,也可能沒有幫助——這超出了 RFC2616 標準和定義。

編輯:RFC2616 已過時,請參閱 RFC7231 和 RFC7235。

那么當用戶請求一個需要非http認證的頁面時,我們應該怎么做呢?發(fā)送狀態(tài)碼 403?

這很重要:“如果您有自己的滾動登錄過程并且從不使用 HTTP 身份驗證,那么 403 始終是正確的響應,并且永遠不應該使用 401?!?/code>

@marcovtwout 發(fā)送 302 到您的登錄頁面,或發(fā)送 403 包含包含如何登錄信息的正文?

RFC2616 應該被 RFC7235 燒毀和替換,但據(jù)我所知,該主題沒有任何變化。

RFC7235 不提供“自己動手”或替代身份驗證挑戰(zhàn)嗎?為什么我的應用程序的登錄流程不能以 WWW-Authenticate 標頭的形式提出挑戰(zhàn)?即使瀏覽器不支持它,我的 React 應用程序也可以...

答4:

一個優(yōu)秀的自由職業(yè)者,應該有對需求敏感和精準需求捕獲的能力,而huntsbot.com提供了這個機會

+-----------------------
  | RESOURCE EXISTS ? (if private it is often checked AFTER auth check)
  +-----------------------
    |       |
 NO |       v YES
    v      +-----------------------
   404     | IS LOGGED-IN ? (authenticated, aka user session)
   or      +-----------------------
   401        |              |
   403     NO |              | YES
   3xx        v              v
              401            +-----------------------
       (404 no reveal)       | CAN ACCESS RESOURCE ? (permission, authorized, ...)
              or             +-----------------------
             redirect          |            |
             to login       NO |            | YES
                               |            |
                               v            v
                               403          OK 200, redirect, ...
                      (or 404: no reveal)
                      (or 404: resource does not exist if private)
                      (or 3xx: redirection)

檢查通常按以下順序進行:

404 如果資源是公共的并且不存在或 3xx 重定向

否則:

如果未登錄或會話過期,則為 401

如果用戶無權訪問資源(文件、json、…),則為 403

404 如果資源不存在或不愿意透露任何東西,或者 3xx 重定向

UNAUTHORIZED:狀態(tài)碼(401)表示請求需要認證,通常這意味著用戶需要登錄(會話)。服務器未知的用戶/代理。可以使用其他憑據(jù)重復。注意:這是令人困惑的,因為這應該被命名為“未經(jīng)身份驗證”而不是“未經(jīng)授權”。如果會話過期,這也可能在登錄后發(fā)生。特殊情況:可以用來代替 404 以避免暴露資源的存在或不存在(信用@gingerCodeNinja)

FORBIDDEN:狀態(tài)碼 (403) 表示服務器理解請求但拒絕執(zhí)行。服務器已知但憑據(jù)不足的用戶/代理。除非憑據(jù)更改,否則重復請求將不起作用,這在短時間內(nèi)不太可能發(fā)生。特殊情況:可以使用而不是 404 來避免泄露資源的存在或不存在(信用@gingerCodeNinja),以防泄露資源的存在會暴露敏感數(shù)據(jù)或給攻擊者提供有用的信息。

NOT FOUND:狀態(tài)碼 (404) 表示請求的資源不可用。用戶/代理已知但服務器不會透露有關資源的任何信息,就好像它不存在一樣。重復將不起作用。這是 404 的特殊用途(例如 github 就是這樣做的)。

正如@ChrisH 所述,redirection 3xx 有幾個選項(301、302、303、307 或根本不重定向并使用 401):

HTTP 重定向代碼之間的區(qū)別

瀏覽器緩存 HTTP 301 多長時間?

重定向到登錄頁面時正確的 HTTP 狀態(tài)代碼是什么?

302 和 307 重定向有什么區(qū)別?

如果用戶未登錄或已登錄但沒有權限,并且內(nèi)容不存在于該位置,有時您可能希望返回 401/403 而不是 404,這樣您就不會暴露什么是或不是如果用戶未經(jīng)過身份驗證和登錄,則不存在。只要知道某些東西存在就可以暗示某些東西或破壞 NDA。因此,有時該圖的 404 部分應移至已登錄/已驗證。

@gingerCodeNinja 是的,這與 404 而不是 403 的邏輯相同,很高興提及這種情況。

感謝您提供所有級別的非常有效 no reveal 案例。當然,這在很大程度上取決于上下文,但我喜歡你已經(jīng)明確表示在所有這些情況下它都是可能的一個選項。

@MattKocaj 請注意,有時可以通過細微的時間差異檢測到 no reveal 案例,不應將其視為安全功能,它可能只會減慢攻擊者的速度或?qū)﹄[私有所幫助。

我認為您的意思是 302 而不是“301 重定向到登錄”。

答5:

與HuntsBot一起,探索全球自由職業(yè)機會–huntsbot.com

根據(jù) RFC 2616 (HTTP/1.1) 403 在以下情況下發(fā)送:

服務器理解請求,但拒絕執(zhí)行。授權將無濟于事,并且不應重復請求。如果請求方法不是 HEAD 并且服務器希望公開請求未完成的原因,它應該在實體中描述拒絕的原因。如果服務器不希望向客戶端提供此信息,則可以使用狀態(tài)碼 404(未找到)代替

換句話說,如果客戶端可以通過身份驗證訪問資源,則應該發(fā)送 401。

huntsbot.com提供全網(wǎng)獨家一站式外包任務、遠程工作、創(chuàng)意產(chǎn)品分享與訂閱服務!

如果不清楚他們是否可以訪問?假設我有 3 個用戶級別 - Public、Members 和 Premium Members。假設該頁面僅供高級會員使用。公共用戶基本上是未經(jīng)身份驗證的,并且在登錄時可能是會員或高級會員。對于會員用戶級別,403 似乎合適。對于高級會員,401。但是,您為公眾提供什么服務?

恕我直言,這是最準確的答案。這取決于應用程序,但通常,如果經(jīng)過身份驗證的用戶對資源沒有足夠的權限,您可能希望提供一種更改憑據(jù)或發(fā)送 401 的方法。我認為 403 最適合從未提供過的內(nèi)容。在 asp.net 中,這意味著 web.config 文件 *.resx 文件等,因為無論哪個用戶登錄,這些文件都將永遠不會被提供,因此再試一次也沒有意義。

+1,但不確定的+1。合乎邏輯的結(jié)論是永遠不應該返回 403,因為 401 或 404 將是嚴格更好的響應。

@Mel我認為客戶端不應訪問的文件應該是404。它是系統(tǒng)內(nèi)部的文件;外界甚至不應該知道它的存在。通過返回 403,您可以讓客戶端知道它的存在,無需將該信息泄露給黑客。 403 的規(guī)范說 An origin server that wishes to "hide" the current existence of a forbidden target resource MAY instead respond with a status code of 404 (Not Found).

雖然在我看來這可能是對舊 RFC 2616 的準確解釋,但請注意 RFC 7231 defines the semantics of a 403 differently,實際上明確指出 “客戶端可以使用新的或不同的憑據(jù)重復請求?!?因此,雖然這個答案在 2010 年是準確的,但今天完全錯誤,因為狀態(tài)碼的含義已經(jīng)在我們腳下被改寫了。 (令人討厭的是,Changes from RFC 2616 附錄不承認更改?。?/code>

答6:

HuntsBot周刊–不定時分享成功產(chǎn)品案例,學習他們?nèi)绾纬晒⒆约旱母睒I(yè)–huntsbot.com

假設 HTTP 身份驗證(WWW-Authenticate 和 Authorization 標頭)正在使用中,如果以另一個用戶身份進行身份驗證將授予對所請求資源的訪問權限,則應返回 401 Unauthorized。

403 Forbidden 用于禁止所有人訪問資源或限制在給定網(wǎng)絡或僅允許通過 SSL 訪問資源,只要它與 HTTP 身份驗證無關。

如果未使用 HTTP 身份驗證,并且服務具有基于 cookie 的身份驗證方案(如現(xiàn)在的規(guī)范),則應返回 403 或 404。

關于 401,這是來自 RFC 7235 (Hypertext Transfer Protocol (HTTP/1.1): Authentication):

3.1。 401 Unauthorized 401 (Unauthorized) 狀態(tài)碼表示由于缺少目標資源的有效身份驗證憑據(jù),請求尚未應用。源服務器必須發(fā)送一個 WWW-Authenticate 頭字段(第 4.4 節(jié)),其中包含至少一個適用于目標資源的質(zhì)詢。如果請求包含身份驗證憑據(jù),則 401 響應表明這些憑據(jù)的授權已被拒絕??蛻舳丝梢允褂眯碌幕蛱鎿Q的授權頭字段重復請求(第 4.1 節(jié))。如果 401 響應包含與先前響應相同的質(zhì)詢,并且用戶代理已經(jīng)嘗試了至少一次身份驗證,那么用戶代理應該向用戶呈現(xiàn)封閉的表示,因為它通常包含相關的診斷信息。

403(和 404)的語義隨著時間而改變。這是從 1999 年開始的 (RFC 2616):

10.4.4 403 Forbidden 服務器理解請求,但拒絕執(zhí)行。授權將無濟于事,并且不應重復請求。如果請求方法不是 HEAD 并且服務器希望公開請求未完成的原因,它應該在實體中描述拒絕的原因。如果服務器不希望向客戶端提供此信息,則可以使用狀態(tài)代碼 404(未找到)來代替。

2014 年 RFC 7231 (Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content) 改變了 403 的含義:

6.5.3. 403 Forbidden 403(Forbidden)狀態(tài)碼表示服務器理解請求但拒絕授權。希望公開請求被禁止的原因的服務器可以在響應負載(如果有)中描述該原因。如果請求中提供了身份驗證憑據(jù),則服務器認為它們不足以授予訪問權限??蛻舳瞬粦褂孟嗤膽{據(jù)自動重復請求??蛻舳丝梢允褂眯碌幕虿煌膽{據(jù)重復請求。但是,由于與憑證無關的原因,可能會禁止請求。希望“隱藏”當前存在的被禁止目標資源的源服務器可以改為響應狀態(tài)碼 404(未找到)。

因此,403(或 404)現(xiàn)在可能意味著任何事情。提供新的憑據(jù)可能會有所幫助……也可能不會。

我相信這種情況發(fā)生變化的原因是 RFC 2616 假設在實踐中使用 HTTP 身份驗證時,今天的 Web 應用程序使用例如表單和 cookie 構(gòu)建自定義身份驗證方案。

這是有趣的?;?RFC 7231 和 RFC 7235,我看不出 401 和 403 之間有明顯區(qū)別

403 的意思是“我認識你,但你看不到這個資源”。沒有理由混淆。

“如果請求包含身份驗證憑據(jù),則 401 響應表明這些憑據(jù)的授權已被拒絕??蛻舳丝梢允褂眯碌幕蛱鎿Q的授權頭字段(第 4.1 節(jié))重復請求?!钡?,然后是“4.2. 'Authorization' 標頭字段允許用戶代理向原始服務器驗證自己”??雌饋碓?RFC7235 中他們使用術語“授權”,就像它是“身份驗證”一樣。在這種情況下,經(jīng)過身份驗證但未授權的用戶似乎不應該得到 401,而是 403

@Brian 主要區(qū)別是,如果您的系統(tǒng)使用 RFC 7235 中指定的 HTTP 身份驗證,則返回 401(因此您必須返回帶有此類響應的 WWW-Authenticate 標頭),否則返回 403。

@MichaelBlackburn 不,事實并非如此。服務器不需要知道您返回 403。一方面,舊的 RFC 2616 規(guī)范和新的 RFC 7231 規(guī)范都沒有這樣說;另一方面,新規(guī)范中的“如果在請求中提供了身份驗證憑據(jù)”這句話只有在請求中不包含身份驗證憑據(jù)的某些情況下(即服務器確實確實如此的情況下)可以返回 403 時才有意義不是“認識你”)。

答7:

huntsbot.com精選全球7大洲遠程工作機會,涵蓋各領域,幫助想要遠程工作的數(shù)字游民們能更精準、更高效的找到對方。

401未經(jīng)授權:我不知道你是誰。這是一個身份驗證錯誤。

403 Forbidden:我知道你是誰,但你沒有訪問該資源的權限。這是一個授權錯誤。

不確定它特別“總是”意味著發(fā)件人是未知的。只是他們要求的任何東西都沒有得到授權。

雖然您的解釋看起來令人信服,但我不滿意或不相信它,因為錯誤 401 表示名稱本身的授權,而您正在與身份驗證混合使用。好吧,我可以告訴一個場景,使用我獲得令牌的憑據(jù)意味著成功通過身份驗證,并使用它來訪問該令牌的“未經(jīng)授權的資源”。那是未經(jīng)授權的401。你對此有什么要說的?

@Jasmine 您的擔憂是可以理解的,但上述解釋是正確的。術語沖突是由 http 規(guī)范不符合當前廣泛使用的術語“身份驗證”和“授權”定義引起的??赡苁怯捎谶@些定義沒有像現(xiàn)在這樣普遍使用。我們被沖突及其引起的混亂所困擾。支持這一點的證據(jù)是瀏覽器的默認行為是在 401 響應中提示輸入憑據(jù)。

這是對公認答案中描述的區(qū)別的精辟總結(jié)。但是,就像公認的答案一樣,這完全是錯誤的。 HTTP 規(guī)范中沒有任何內(nèi)容支持這種區(qū)別,而且規(guī)范根本不允許不使用返回 401 的 WWW-Authenticate 和 Authorization 標頭的典型網(wǎng)站登錄系統(tǒng)。

答8:

huntsbot.com全球7大洲遠程工作機會,探索不一樣的工作方式

這是一個較老的問題,但從未真正提出的一個選項是返回 404。從安全角度來看,投票最高的答案可能會受到 information leakage vulnerability 的影響。比如說,有問題的安全網(wǎng)頁是系統(tǒng)管理頁面,或者更常見的是,是系統(tǒng)中用戶無權訪問的記錄。理想情況下,您甚至不希望惡意用戶知道那里有頁面/記錄,更不用說他們無權訪問了。當我構(gòu)建這樣的東西時,我會嘗試在內(nèi)部日志中記錄未經(jīng)身份驗證/未經(jīng)授權的請求,但返回 404。

OWASP 有一些關于攻擊者如何將此類信息用作攻擊的一部分的more information。

之前的答案中已經(jīng)提到了 404 的使用。您說得對:信息泄漏,這對于任何推出自己的身份驗證/授權方案的人來說應該是一個重要的考慮因素。 +1 提及 OWASP。

具有諷刺意味的是,OWASP 鏈接現(xiàn)在轉(zhuǎn)到 404 頁面。我在 owasp.org/index.php/… 上發(fā)現(xiàn)了類似的東西(我認為)

取決于 API 以及如何授予訪問權限。但是“泄漏”不是問題,如果它為用戶名/密碼返回 401,它肯定與 Web 表單相同嗎?

@anned20 具有諷刺意味的是,您發(fā)布的鏈接也返回 404 頁面。

答9:

huntsbot.com聚合了超過10+全球外包任務平臺的外包需求,尋找外包任務與機會變的簡單與高效。

前段時間有人問過這個問題,但人們的想法還在繼續(xù)。

此草稿(由 Fielding 和 Reschke 撰寫)中的 Section 6.5.3 賦予狀態(tài)代碼 403 與 RFC 2616 中記錄的含義略有不同的含義。

它反映了許多流行的 Web 服務器和框架所采用的身份驗證和授權方案中發(fā)生的情況。

我已經(jīng)強調(diào)了我認為最突出的一點。

6.5.3. 403 Forbidden 403(Forbidden)狀態(tài)碼表示服務器理解請求但拒絕授權。希望公開請求被禁止的原因的服務器可以在響應負載(如果有)中描述該原因。如果請求中提供了身份驗證憑據(jù),則服務器認為它們不足以授予訪問權限??蛻舳瞬粦褂孟嗤膽{據(jù)重復請求。客戶端可以使用新的或不同的憑據(jù)重復請求。但是,由于與憑證無關的原因,可能會禁止請求。希望“隱藏”當前存在的被禁止目標資源的源服務器可以改為響應狀態(tài)碼 404(未找到)。

無論您使用什么約定,重要的是在您的站點/API 中提供統(tǒng)一性。

該草案獲得批準,現(xiàn)在是 RFC 7231。

答10:

與HuntsBot一起,探索全球自由職業(yè)機會–huntsbot.com

這些是含義:

401:用戶未(正確)認證,資源/頁面需要認證

403:用戶的角色或權限不允許訪問請求的資源,例如用戶不是管理員,請求的頁面是管理員的。

注意:從技術上講,403 是 401 的超集,因為為未經(jīng)身份驗證的用戶提供 403 也是合法的。反正區(qū)分更有意義。

這是對這個問題的一個很好的 TLDR 答案。

這寫得很清楚,直截了當,但是錯了。當用戶未通過身份驗證時,返回 403s 是完全可以的。規(guī)范中沒有其他說明,并且通常在這種情況下您不能使用 401,因為只有在包含 WWW-Authenticate 標頭時返回 401 才是合法的。

tx @MarkAmery,我稍微更正了句子以包括可能的認證

答11:

huntsbot.com洞察每一個產(chǎn)品背后的需求與收益,從而捕獲靈感

?。?! DEPR:答案反映了 2014 年之前的常見做法?。?!

TL;博士

401:與身份驗證有關的拒絕

403:與身份驗證無關的拒絕

實際例子

如果 apache 需要身份驗證(通過 .htaccess),并且您點擊 Cancel,它將以 401 Authorization Required 響應

如果 nginx 找到一個文件,但沒有 訪問權限(用戶/組)來讀取/訪問它,它將以 403 Forbidden 響應

RFC(2616 第 10 節(jié))

401 未經(jīng)授權 (10.4.2)

含義1:需要認證

該請求需要用戶身份驗證。 …

含義2:身份驗證不足

…如果請求已包含授權憑據(jù),則 401 響應表明已拒絕對這些憑據(jù)的授權。 …

403禁止(10.4.4)

含義:與身份驗證無關

…授權無濟于事…

更多細節(jié):

服務器理解請求,但拒絕執(zhí)行。

它應該描述實體中拒絕的原因

可以使用狀態(tài)碼 404(未找到)代替

(如果服務器想從客戶端保留此信息)

您的“授權將無濟于事”引用自 2014 年 6 月以來已過時的規(guī)范。tools.ietf.org/html/rfc7231 替換它并說相反 - “客戶可以使用新的或不同的憑據(jù)重復請求?!?因此,現(xiàn)在絕對可以在“需要驗證”和“驗證不足”的場景中使用 403 響應。

謝謝!如果你愿意,你可以編輯答案?,F(xiàn)在我在頂部放了一個棄用警告。

原文鏈接:https://www.huntsbot.com/qa/8KBX/403-forbidden-vs-401-unauthorized-http-responses?lang=zh_CN&from=csdn

打造屬于自己的副業(yè),開啟自由職業(yè)之旅,從huntsbot.com開始!文章來源地址http://www.zghlxwxcb.cn/news/detail-754762.html

到了這里,關于403 Forbidden vs 401 Unauthorized HTTP 響應的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 解決微服務進行遠程調(diào)用時報錯:feign.FeignException$Unauthorized: [401] during [GET] to [http://xxxxx]

    現(xiàn)在有兩個服務,一個 user-service 服務作為 服務提供者 ,另一個 resource-service 服務作為 服務消費者 ,當消費者進行遠程調(diào)用服務者提供的服務時出現(xiàn)未授權錯誤Unauthorized: [401]。 在 Feign 在進行遠程調(diào)用時, 默認是沒有將請求頭繼續(xù)往下傳遞的, 而系統(tǒng)微服務接入認證之后, 必

    2024年02月05日
    瀏覽(15)
  • LiveNVR監(jiān)控流媒體Onvif/RTSP功能-安全控制HTTP接口鑒權開啟禁止游客訪問開啟后401 Unauthorized如何播放調(diào)用接口

    LiveNVR監(jiān)控流媒體Onvif/RTSP功能-安全控制HTTP接口鑒權開啟禁止游客訪問開啟后401 Unauthorized如何播放調(diào)用接口

    如果是內(nèi)網(wǎng)集成,可以把接口鑒權取消勾選保存。公網(wǎng)使用時候,這里建議勾選。 僅僅勾選 接口鑒權 時候,游客還可以訪問視頻廣場頁面,播放視頻,如果需要更安全的控制,勾選上 禁止游客訪問 調(diào)用接口的時候,或播放視頻流的時候 ,遇到返回401的狀態(tài)碼,表示沒有權

    2024年02月16日
    瀏覽(32)
  • HTTP 錯誤 401.3 - Unauthorized 由于 Web 服務器上此資源的訪問控制列表(ACL)配置或加密設置,您無權查看此目錄或頁面。

    HTTP 錯誤 401.3 - Unauthorized 由于 Web 服務器上此資源的訪問控制列表(ACL)配置或加密設置,您無權查看此目錄或頁面。

    用IIS 發(fā)布網(wǎng)站,不能訪問且出現(xiàn)錯誤:HTTP 錯誤 401.3 - Unauthorized 由于Web服務器上此資源的訪問控制列表(ACL)配置或加密設置。您無權查看此目錄或頁面 問題截圖: 問題描述:HTTP 錯誤 401.3 - 未經(jīng)授權:訪問由于 ACL 對所請求資源的設置被拒絕。 原因分析:IIS匿名用戶一般屬于

    2024年02月05日
    瀏覽(26)
  • 微信小程序401 unauthorized 授權問題解決方法

    問題: 在做微信小程序項目的時候,在請求接口的時候經(jīng)常出現(xiàn)unauthorized這個問題。 這是由于在請求接口的時候,沒有定義header。 在請求接口的時候加入 header,然后把token 賦值給Authorization 然而這樣還是繼續(xù)報錯。 后來……發(fā)現(xiàn),它報錯變成了 Bad Authorization header format. F

    2024年02月16日
    瀏覽(25)
  • maven 打包 deploy 項目時 出現(xiàn) 401 Unauthorized

    maven 打包 deploy 項目時 出現(xiàn) 401 Unauthorized - 大姚666 - 博客園 對這個問題的解決方法 在maven 插件中的 setting.xml 需要配置服務的授權信息 server ? ? ? idreleases/id ? ? ? usernameadmin/username ? ? ? passwordadmin123/password ? ? /server ? ? server ? ? ? idsnapshots/id ? ? ? usernameadmin/username ? ?

    2024年02月14日
    瀏覽(18)
  • ZLMediakit-method ANNOUNCE failed: 401 Unauthorized

    ZLMediakit-method ANNOUNCE failed: 401 Unauthorized

    使用ffmpeg推流: ?解決方式 修改配置文件config.ini ?

    2024年02月12日
    瀏覽(37)
  • Spring Security請求oauth/token接口報401 Unauthorized

    Spring Security請求oauth/token接口報401 Unauthorized

    項目spring-security+oauth2 版本是5.7.6 項目以client的形式請求 TokenEndPoint 中的 /oauth/token ,使用Basic認證調(diào)用接口,返回token 先前是可以登錄訪問,更新代碼之后,現(xiàn)在登錄訪問報401 Unauthorized 問題的難點是,這個錯誤信息是項目中請求以http方式請求 TokenEndPoint 中的 /oauth/token 返回

    2023年04月22日
    瀏覽(30)
  • idea 中的gitee出現(xiàn) Incorrect credentials. Request response: 401 Unauthorized

    idea 中的gitee出現(xiàn) Incorrect credentials. Request response: 401 Unauthorized

    idea 中的gitee出現(xiàn) Incorrect credentials. Request response: 401 Unauthorized 如圖 ? 報錯信息內(nèi)容,憑據(jù)不正確,請求未經(jīng)授權 401 1.檢查 Login:不是賬號 , 一般指gitee綁定的郵箱地址? , 有人用@里面的東西不包括@符號 2.手動添加憑據(jù)如下圖?: ? ? ?點擊添加憑據(jù) 添加憑證 ? 注意: I

    2024年02月11日
    瀏覽(26)
  • Return code is: 401, ReasonPhrase: Unauthorized.Maven部署到Nexus失敗

    完整錯誤:deploy (default-deploy) on project maven_01_parent: Failed to deploy artifacts: Could not transfer artifact com.kk:maven_01_parent:pom:1.0-20230405.031950-1 from/to kk-snapshot (http://localhost:8081/repository/kk-snapshot/): Failed to transfer file: http.Return code is: 401, ReasonPhrase: Unauthorized. 1、問題分析 根據(jù)其他文章的總結(jié)

    2023年04月09日
    瀏覽(24)
  • sklearn下載數(shù)據(jù)集時的HTTPError: HTTP Error 403: Forbidden(已解決)

    sklearn下載數(shù)據(jù)集時的HTTPError: HTTP Error 403: Forbidden(已解決)

    目錄 問題如下: 嘗試1:重建dns緩存 無奈的解決方式: 對于一些常規(guī)的403 forbidden錯誤,馬海祥建議大家首先要嘗試的就是重建dns緩存,在運行中輸入cmd,然后輸入ipconfig /flushdns即可。如果不行的話,就需要在hosts文件里把主頁解析一下了。 ?導致403錯誤的原因和解決方法

    2024年02月11日
    瀏覽(64)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包