问题描述
使用七牛云存储遇到了很多坑,比如这个回调鉴权就废了很多时间,特此记录。七牛的回调鉴权主要是通过在请求头上中一个 AUTHORIZATION 的字段中的值来与本地生成的签名生成的值进行比对,如果相同,认证通过。
HTTP协议中的 Authorization 请求消息头含有服务器用于验证用户代理身份的凭证,通常会在服务器返回401 Unauthorized 状态码以及WWW-Authenticate 消息头之后在后续请求中发送此消息头。
但是,在业务服务器上使用 $_SERVER[‘HTTP_AUTHORIZATION’] 总是获取不到这个字段的内容,通过提交工单和搜索相关问题发现好像是Apache配置的问题。
解决方案
开启Apache配置中的rewrite,然后在入口目录中的.htaccess文件写入下面内容123#Authorization Headers RewriteCond %{HTTP:Authorization} ^(.+)$ RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]