HTTP请求首部——Authorization

本文深入解析HTTP中的Authorization与WWW-Authentication首部作用,探讨客户端如何通过提供数据完成服务器认证过程,实现安全的资源访问。

前几天的任务需要用到Authorization认证,任务比较急,就照着给的例子写好了,现在任务结束了,还是来了解一下这个Authorization。

Authorization 是一个HTTP安全请求首部,包含了客户端提供给服务器 便于对其自身进行认证的数据。

WWW-Authentication:定义了使用何种验证方式去获取对资源的连接。

如果服务器希望在为用户提供对站点的访问之前先行登录,那么:

  • 当浏览器向站点发起一个请求
  • 站点不知道用户身份,则向浏览器回送一条 HTTP 响应代码 401 Login Required,并添加 WWW-Authentication 首部, 要求用户登录。
  •  用户输入用户名密码登录,浏览器就会重复原来的请求,并添加一个 Authorization 首部说明用户名和密码(加密过)。
  • 服务器就知道用户的身份了。
     
### 自定义HTTP请求头的方法 #### 使用PHP的CURL库添加自定义请求头 在PHP中,可以利用`curl_setopt()`函数来配置cURL会话选项。为了向HTTP请求添加自定义头部信息,需使用`CURLOPT_HTTPHEADER`这个常量作为第一个参数传递给该函数,并且第二个参数应该是一个数组,其中包含了要附加到请求上的各个头部字段及其对应的值。 ```php <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://example.com"); curl_setopt($ch, CURLOPT_POST, 1); // 设置自定义请求头 curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Content-Type: application/json", "Authorization: Bearer YOUR_ACCESS_TOKEN" )); curl_exec ($ch); curl_close ($ch); ?> ``` 此代码片段展示了如何创建一个新的cURL资源,指定目标网址以及POST方法之后,通过调用`curl_setopt()`设置了两个自定义请求头:“Content-Type”和“Authorization”。最后执行请求并关闭连接[^1]。 #### Nginx处理带有自定义标头的请求 当客户端发出含有自定义标头的HTTP请求到达Nginx时,这些额外的数据会被当作标准的一部分被解析出来。假设服务器接收到一封电子邮件形式的HTTP请求,在其信封(即请求头部分)里发现了一些特殊的备注——也就是所谓的自定义标头,则Nginx能够识别它们并将之转发至后端应用服务去进一步处理。不过需要注意的是,默认情况下某些特定名称开头的标头可能会受到保护而不允许直接修改或新增;对于其他类型的自定义标头则通常不会存在问题[^2]。 #### 解决跨域资源共享(CORS)问题下的自定义请求头 如果遇到因为尝试添加自定义请求头而导致浏览器抛出关于跨源资源共享策略(Cross-Origin Resource Sharing, CORS)方面的错误提示,这往往是因为响应首部缺少必要的权限声明所致。具体来说,就是在预检请求(Preflight Request)阶段未能获得来自服务器端授予访问控制列表(`Access-Control-Allow-Headers`)内所列明的相关项许可之前,任何试图携带未经认可的自定义字段发起的实际数据传输都将遭到阻止。因此解决办法是在服务器返回的内容里面加入适当范围内的授权说明: ```apacheconf header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Custom-Header"); ``` 上述指令告知浏览器哪些种类的自定义请求头是可以接受的,从而使得前端应用程序能够在不违反安全规定的情况下成功提交包含此类元数据在内的网络请求[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值