Как отправить мой файл cookie авторизации только для http с AJAX или XMLHttpRequest в CodeIgniter? - PullRequest
1 голос
/ 26 сентября 2019

Я создаю приложение в CodeIgniter и храню токен авторизации в файле cookie только для http.Мне известно о том, что файлы cookie только для http недоступны клиенту, и подумал об обходном пути, отправив запрос $ .POST в submitfile, который вызывает файл APIController.php, который отправляет запрос cUrl в API,Однако при этом я теряю свои коды статуса http.

Может ли кто-нибудь предложить правильный способ авторизации моего пользователя с помощью файла cookie только для http без необходимости обновления страницы при отправке?

Заранее спасибо!

index.php

            var form = $(this);
            var url = "submitfile.php";  
            $.ajax({
                   type: "POST",
                   url: url, 
                   contentType: "application/json; charset=utf-8", 
                   data: JSON.stringify(ConvertFormToJSON(form)), 
                   always: function(data)
                   {
                    console.log(data);
                   }
                 }); 

submitfile.php

        include_once('../controllers/ApiController.php');
        $data = file_get_contents("php://input"); 
        echo json_decode(callApi("POST", '/api/house/new.php',$data));

ApiController.php

<?php 
function callAPI($method, $url, $data = false)
{
    $curl = curl_init();

    switch ($method)
    {
        case "POST":
            curl_setopt($curl, CURLOPT_POST, 1);

            if ($data)
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            break;
        case "PUT":
            curl_setopt($curl, CURLOPT_PUT, 1);
            break;
        default:
            if ($data)
                $url = sprintf("%s?%s", $url, http_build_query($data));
    }


   curl_setopt($curl, CURLOPT_URL, $url);

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

   $authorization = 'Snap: ' . $_COOKIE['Authorization'];

   curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        $authorization, 
      'Content-Type: application/json'

   )); 
    $result = curl_exec($curl);
    if (!curl_errno($curl)) {
  switch ($http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE)) {
    case 200:  # OK
      break;
    default:
      echo 'Unexpected HTTP code: ', $http_code, "\n";
  }
}

    if(!$result){die('jammer');}
    curl_close($curl);

    return $result; 
}
...