PHP - Ответ на предполетный запрос не проходит проверку контроля доступа: он не имеет статуса HTTP ok - PullRequest
0 голосов
/ 06 мая 2020

У меня в коде клиента есть следующий запрос:

$.ajax({
    type: "GET",
    url: "some_external_address.php",
    headers: {
        Authorization: "Bearer " +localStorage.getItem("token") 
    },
    success: function (data) {
        // some code            
    },
    error: function (data) {}
});

И следующий код сервера:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header("Access-Control-Allow-Headers: Authorization, X-Requested-With, Content-Type, Accept, Origin");
header('Access-Control-Allow-Credentials: true');

header("HTTP/1.0 404 Not Found");

Проблема в том, что когда я отправляю свой запрос без заголовка авторизации это работает хорошо.

Но когда мне нужно отправить ответ об ошибке с кодом, отличным от 2XX, он дает следующую ошибку: It does not have HTTP ok status.

Ответы [ 2 ]

1 голос
/ 06 мая 2020

попробуйте следующий код:

$.ajax({
     type: "GET",
     beforeSend: function(request) {
         request.setRequestHeader("Authorization", "Bearer " + your_token_var);
     },
     url: "your_url",
     success: function(resp) {
         console.log(resp);
     }
    });

с уважением

0 голосов
/ 17 мая 2020

Я создал headers.php, чтобы установить заголовки по умолчанию для всех файлов со следующим кодом:

<?php
// required headers
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization');
header("Access-Control-Allow-Credentials: true");
header('Content-Type: application/json');
$method = $_SERVER['REQUEST_METHOD'];
if ($method == "OPTIONS") {
    header('Access-Control-Allow-Origin: *');
    header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method,Access-Control-Request-Headers, Authorization");
    header("HTTP/1.1 200 OK");
    die();
}
?>

Проблема заключалась в том, что я должен обрабатывать метод OPTIONS по-другому, возвращая код состояния HTTP ok .

Источник: PHP: Как отправить код ответа HTTP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...