You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

服务器迁移后Laravel API后续请求认证失败问题排查

问题:Laravel API迁移GoDaddy服务器后Bearer认证失败(401)

我有一个部署在GoDaddy服务器上的Laravel API,迁移到更小规格的服务器后,首次认证请求能正常完成无报错,但携带API Token发起后续请求时,Laravel会抛出AuthenticationException并返回401未授权错误。


认证请求

POST https://example.com/api/v1/authenticate
BODY {"api_token":"lKqsFGhhMfKFtly9Y2HJOiDOr1Gnu2eERbQlsPXXjZwZb1RZ"}

认证响应

{
    "meta": {
        "status": 200,
        "success": true,
        "results": 0,
        "endpoint": "https://example.com/api/v1/authenticate"
    },
    "data": {
        "player": {
            "id": 667,
            "username": "myusername",
            "email": "user@example.com",
            "is_logged_id": 1,
            "api_token": "lKqsFGhhMfKFtly9Y2HJOiDOr1Gnu2eERbQlsPXXjZwZb1RZ"
        }
    }
}

带认证信息的API请求

curl --location 'https://example.com/api/v1/categories' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer lKqsFGhhMfKtr9f0zB4szYiFtly9Y2HJOiDOr1Gnu2eERbQlsPXXjZwZb1RZ' \
--header 'Cookie: XSRF-TOKEN=eyJpdiI6ImQwVk5TdkYwUTFtU25qb3RLYmR3dXc9PSIsInZhbHVlIjoiMi9tUWdWUDFjK0ozQVlNMzBQTVdJUmdaT2pjOCt3akMzZ0t5Z1huUlB0ekI1Q0drYlY0WEpvWkk3MlJWcVVrTVZ0SXdwRW14NnpCb2RMTDZMV1ZGa3crMmdJbXhZeU1GUGcrN1JBMytzQitEWWlkNzNqVWVUMTVoSkw0Z1BSOGsiLCJtYWMiOiIzN2ZkNWEzMjQxNmI3MTBiNjRhN2EzOGFhZTEzN2FkOTY0OTY0NTQ3NmE4YjU1NWQ0NDE4NjAzYTg3MzYzN2E1IiwidGFnIjoiIn0%3D'

带认证信息的API响应及请求头

Symfony\Component\HttpFoundation\HeaderBag {#39 // app/Exceptions/Handler.php:15
  #headers: array:8 [
    "accept" => array:1 [
      0 => "application/json"
    ]
    "user-agent" => array:1 [
      0 => "PostmanRuntime/7.37.0"
    ]
    "cache-control" => array:1 [
      0 => "no-cache"
    ]
    "postman-token" => array:1 [
      0 => "66cf99ea-91d9-4855-8ab7-901d0c75ad90"
    ]
    "host" => array:1 [
      0 => "example.com"
    ]
    "accept-encoding" => array:1 [
      0 => "gzip, deflate, br"
    ]
    "connection" => array:1 [
      0 => "keep-alive"
    ]
    "x-https" => array:1 [
      0 => "1"
    ]
  ]
  #cacheControl: array:1 [
    "no-cache" => true
  ]
}
{
    "error": "Unauthenticated."
}

本地环境运行相同API无此问题,将服务器上的API下载后用php artisan serve运行也正常,已执行composer install无报错,请问是否遗漏了服务器端配置?


排查方向

  • Web服务器请求头传递问题:
    • Apache:确认mod_rewrite已启用,且.htaccess文件添加规则强制传递Authorization头:
      RewriteEngine On
      RewriteCond %{HTTP:Authorization} ^(.*)
      RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
      
    • Nginx:在站点配置中添加proxy_set_header Authorization $http_authorization;,避免Token请求头被丢弃。
  • PHP配置限制:检查服务器php.ini的variables_order配置,确保包含E(环境变量),否则Laravel无法读取$_SERVER['HTTP_AUTHORIZATION']。
  • GoDaddy特殊安全规则:部分GoDaddy共享主机会过滤特殊请求头,可联系服务商确认是否有相关限制,或尝试在.htaccess中添加上述规则绕过滤。
  • 缓存清理:执行php artisan config:clear和php artisan cache:clear清除服务器端配置缓存,确保Laravel加载最新认证逻辑。
  • 请求头长度限制:若API Token过长,可能被Web服务器截断,可尝试缩短Token测试,或调整服务器的请求头长度限制(如Nginx的large_client_header_buffers)。

内容的提问来源于stack exchange,提问作者Ciara K.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 03:37:48