Я создаю приложение в 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;
}