HTTP响应码403 Forbidden和401 Unauthorized对比
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP响应码403 Forbidden和401 Unauthorized对比相关的知识,希望对你有一定的参考价值。
参考技术A401 Unauthorized : 该HTTP状态码表示认证错误,它是为了认证设计的,而不是为了授权设计的。收到401响应,表示请求没有被认证—压根没有认证或者认证不正确—但是请重新认证和重试。(一般在响应头部包含一个 WWW-Authenticate 来描述如何认证)。通常由web服务器返回,而不是web应用。从性质上来说是临时的东西。(服务器要求客户端重试)
403 Forbidden :该HTTP状态码是关于授权方面的。从性质上来说是永久的东西,和应用的业务逻辑相关联。它比401更具体,更实际。收到403响应表示服务器完成认证过程,但是客户端请求没有权限去访问要求的资源。
总的来说, 401 Unauthorized 响应应该用来表示缺失或错误的认证; 403 Forbidden 响应应该在这之后用,当用户被认证后,但用户没有被授权在特定资源上执行操作。
HTTP状态码决策图:
403 Forbidden vs 401 Unauthorized HTTP responses
HTTP Status Codes Decision Diagram – Infographic
.htaccess RewriteEngine 在 xampp 中导致 Unexpected 403 Forbidden http 响应代码
【中文标题】.htaccess RewriteEngine 在 xampp 中导致 Unexpected 403 Forbidden http 响应代码【英文标题】:.htaccess RewriteEngine causing Unexpected 403 Forbidden http response code in xampp 【发布时间】:2021-10-10 00:50:52 【问题描述】:我正在使用 xampp 测试一些 php 代码。
在主项目目录中,我有以下 .htaccess 文件:
RewriteEngine on
#Index
RewriteCond %REQUEST_FILENAME ^/$
RewriteRule request_handler.php [L]
#php files
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f [OR]
RewriteCond %REQUEST_FILENAME ^.*(\.php)$
RewriteRule . request_handler.php [L]
#Blocked files. PHP blocked files should be specified in request_handler.php
<Files "setup.json">
Order Allow,Deny
Deny from all
</Files>
<Files "testimonials.json">
Order Allow,Deny
Deny from all
</Files>
#CACHE CONTROLL FOR STATIC RESOURSES
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
无论如何,我在所有请求中都遇到了意外的 403 禁止。但是,如果我删除 .htaccess 文件的第一行,我将不再出现这种意外行为。
有谁知道是什么导致了这个错误?
更新
我创建了一个新的 .htaccess 文件,它只包含一行:RewriteEngine On
,但我仍然收到错误消息。 (如果我删除该行,我将停止收到错误)。该行的唯一存在会导致错误。
【问题讨论】:
【参考方案1】:事实证明,我所要做的就是在 RewriteEngine On
指令之前添加行 Options FollowSymLinks
。
这是 Apache 不得不说的:
要在此上下文中启用重写引擎,您需要设置“RewriteEngine On”并且必须启用“Options FollowSymLinks”。 [...] 出于安全原因,需要此限制。
Apache documentation
【讨论】:
以上是关于HTTP响应码403 Forbidden和401 Unauthorized对比的主要内容,如果未能解决你的问题,请参考以下文章
Spring MVC(或 Spring Boot)。针对安全相关异常(例如 401 Unauthorized 或 403 Forbidden)的自定义 JSON 响应)
HTTP 401 Unauthorized 或 403 Forbidden 对于“已禁用”用户?