Authorization头必须严格写为“Authorization: Bearer {{token}}”,Bearer后需英文空格,大小写敏感,变量名仅限字母数字下划线,且须先定义后引用;Cookie值含等号或分号时须用双引号包裹。

Authorization头怎么写才不被忽略
PhpStorm HTTP Client 不自动读浏览器 Cookie 或 localStorage,Token 必须显式写进 Authorization 请求头,且格式不能错。常见错误是漏空格、大小写错、或把 Token 当字符串裸写。
-
Authorization: Bearer {{token}}✅ ——Bearer后必须有一个英文空格,{{token}}是变量名,不是占位符文字 -
authorization: bearer xxx❌ —— 方法名和值都必须首字母大写,小写会被忽略 -
Authorization: Bearer"xxx"❌ ——Bearer和 Token 之间少空格,整个头无效 - Token 值含特殊字符(如
+、/、=)时,不用额外编码,JWT 本身已 Base64Url 安全
Token 变量定义在哪?为什么总报 “Variable 'token' is not defined”
变量必须“先定义、后引用”,且命名只允许字母、数字、下划线——auth_token 可以,auth-token 或 auth.token 都会失败。
- 全局定义:写在文件最顶部,顶格:
@auth_token = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 - 环境块内定义:用
### @env dev分隔,再写@auth_token = ...,该变量只对后续请求生效 - 从
http-client.env.json加载:文件必须放在项目根目录,内容为{"dev": {"auth_token": "xxx"}},引用时写{{auth_token}},不能写{{dev.auth_token}} - 变量值为空时,PhpStorm 不发请求,只显示
Variable 'auth_token' is not defined,不是崩溃,而是静默拒绝
Cookie 怎么带才不会被截断或解析错
Cookie 头比 Authorization 更容易出错,尤其值里含 =、;、空格时,PHP 后端常收不到完整 sessionid。
- 手动拼接:
Cookie: sessionid=abc123; csrftoken=def456—— 分号后必须跟空格,csrftoken=def456前不能少 - 值含等号或分号时,用双引号包住整个值:
Cookie: "sessionid=abc;123; path=/;" - 不要依赖浏览器导出的 Cookie 字符串——它可能含
$Path、$Domain等非标准字段,HTTP Client 会直接报错 - 调试时可临时加
Cookie: debug=1测试后端是否收到,避免一上来就传长 token
为什么带 Token 的请求还是返回 401?排查顺序是什么
401 不等于 Token 写错了,更可能是传输链路某处被过滤或覆盖。别急着换 Token,按这个顺序查:
立即学习“PHP免费学习笔记(深入)”;
- 看响应头是否有
WWW-Authenticate,有说明后端明确拒绝,没说明可能是请求根本没到鉴权层 - 检查是否漏了
Content-Type:POST/PUT 请求没设Content-Type: application/json,某些框架(如 Laravel Sanctum)会跳过中间件 - 确认 URL 没多出不可见字符:全角空格、BOM 头、换行符粘在 URL 末尾,会导致路由匹配失败,提前返回 401
- 如果用 Docker 或 Nginx 反向代理,检查是否过滤了
Authorization头——Nginx 默认不透传,需加proxy_pass_request_headers on;
真正卡住的地方,往往不是 Token 本身,而是头没传过去、或传过去但被中间件丢弃了。


















