iT邦幫忙

0

請問一下JWT和使用CURL檔案上傳會互相干擾?

  • 分享至 

  • xImage

請問一下,網站使用JWT會和curl做檔案上傳干擾嗎?
我只要把這行刪掉,接收端的api $_POST就收得到上傳檔案,
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: '.$bearer]);
加上去,接收端的api $_POST就收不到上傳檔案。
請問有人遇過這個問題嗎?

$response = getDepositAllData($_POST['username'],$_FILES['fileToUpload']['name'],$_FILES['fileToUpload']['type'],$_POST['session']);
        $header = base64UrlEncode(['alg'=>"HS256","typ"=>"JWT"]);
        $body = base64UrlEncode($response);
        $signature = hash_hmac($header.'.'.$body, '2022xxxxx');
        $bearer = $header . '.' .$body . '.' . $signature . PHP_EOL;
        $base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);

        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, WEBSERVICE_URL);
        curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_TIMEOUT, 60);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_HTTPHEADER, [
            'Authorization: '.$bearer]);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
        $data = curl_exec($curl);
        if (curl_error($curl)) {
            die(curl_error($curl));
        }
        print_r($data);
        $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
        curl_close($curl);
貓虎皮 iT邦新手 3 級 ‧ 2022-06-20 20:56:14 檢舉
[已刪除留言]
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2022-06-21 10:02:26
最佳解答
$bearer = $header . '.' .$body . '.' . $signature . PHP_EOL;

改成

$bearer = 'Bearer ' . $signature;

試試看

參考資料來源

2

認真來說,這已經不是JWT及CURL的問題了。

你要先了解你的API端。是有做了什麼事才行。
如使用了認証,可能會產生跳轉或轉發頁面後而POST參數遺失。

問題一定是在你的API端。

這邊就得要說說一下很多人常做的不好的事。
API與控制合併使用處理。
基本上並不能說不好。只是當你的控制器有做了任何跳轉頁的動作。
都容易讓API請求失敗。

當然了,因為我現在也看不到你API對應的程式為何。我只能幫你往那邊去猜測。
實際情況也請你思考一下。不要一下子就覺得是JWT跟CURL的問題。
它們本身是沒啥問題的。大多數都是用錯的方式而發生問題的。
它們是很無辜的。

我要發表回答

立即登入回答