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

Laravel 9控制器中如何携带Cookie发送POST API请求?

问题:Omada Controller外部门户授权请求无法正确携带Cookie与Header

我正在开发Omada Controller(外部门户服务器)相关功能,目标是实现通过EAP注册用户并授权设备使用WiFi。Postman测试请求正常,但登录后需要携带Cookie授权设备,我编写的Laravel代码无法存储或发送Cookie。

Laravel代码实现

public function AuthFree(Request $req)
{
    $inputs = $req->all();
    //IP Address of Controller
    $endPoint = 'https://CONTROLLER_API:PORT/CONTROLLER_ID/api/v2/hotspot/extPortal/auth';
    $operatorData = self::getCSRFToken();
    $csrfToken = $operatorData->object()->result->token;
    $cookies = $operatorData->cookies()->getCookieByName('TPEAP_SESSIONID')->toArray();//->getValue();
    $deviceBody = [
        'clientMac' => $inputs['clientMac'],
        'apMac' => $inputs['apMac'],
        'ssidName' => $inputs['ssidName'],
        'radioId' => $inputs['radioId'],
        'time' => 1859960742,
        'authType' => 4,
    ];

    $authDevice = Http::withCookies($cookies, $endPoint)
    ->timeout(30)->withOptions([
        'verify' => false,
    ])
    ->withHeaders([
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Csrf-Token' => $csrfToken,
        ])
        ->post($endPoint, $deviceBody);
    dd($authDevice);
}

//Login operator.
public function getCSRFToken()
{
    $authOperator = Http::accept('application/json')->timeout(15)->withOptions([
        'verify' => false,
    ])
        ->post('https://IP:PORT/ID/api/v2/hotspot/login', [
            'name' => 'USERNAME',
            'password' => 'PASSWORD',
        ]);
        
    return $authOperator;
}

尝试的Curl代码

$ch = curl_init();
// Set return to a value, not return to page
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Set up cookies.
curl_setopt($ch, CURLOPT_COOKIEJAR, request()->cookie('TPEAP_SESSIONID'));
curl_setopt($ch, CURLOPT_COOKIEFILE, request()->cookie('TPEAP_SESSIONID'));
// Allow Self Signed Certs
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
// API Call
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($authInfo));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$res = curl_exec($ch);
$resObj = json_decode($res);
return $resObj;

目前getCSRFToken函数可正常获取token,但authDevice请求失败,核心问题是无法正确携带Header和Cookie。想知道代码存在哪些问题,以及如何正确保存并在请求中携带Cookie。


内容的提问来源于stack exchange,提问作者MinorDestroyer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 02:54:23