Ниже приведен метод API, который возвращает ответ.
Код: Выделить всё
public function sendResponse($returnVar, $status = 200){
$content_type = 'application/json; charset=utf-8';
//returns message equivalent to status code
$status_header = 'HTTP/1.1 '.$status.' '.$this->getStatusCodeMessage($status);
header($status_header);
header('Content-type: '.$content_type);
header('Access-Control-Allow-Origin: *');
//LineA
header("Access-Control-Allow-Methods: GET, HEAD, POST, OPTIONS, PUT, DELETE");
//LineB
header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Headers, Access-Control-Request-Method, Authorization");
if($status!==200){
$returnVar["code"] = $status;
}
echo json_encode($returnVar);
exit;
}
Проблема:
Я получаю сообщение об ошибке 502 плохой шлюз
Я проверил с помощью PostMan. Если я поставлю echo "Here" exit; в LineA. Это работает хорошо. Но когда я помещаю его в LineB, я получаю ошибку 502 Bad Gateway.
Таким образом, проблема явно в заголовке строки («Access-Control-Allow-Methods: GET, HEAD, POST» , ОПЦИИ, ПОЛОЖИТЬ, УДАЛИТЬ"); . Но я не уверен, что именно.
Может ли кто-нибудь пролить свет на то, чего мне не хватает? Заранее спасибо.
Обновление
Удаление последних трех заголовков, похоже, работает. Нужны ли мне последние три заголовка в ответе API? У меня есть отдельный метод для обработки предполетных запросов.
Обновление 2
Иногда оно работает, а иногда нет. Таким образом, несмотря на упомянутые выше изменения, я все равно получал случайную ошибку шлюза 502 с теми же вызовами API с теми же параметрами.
Подробнее здесь: https://stackoverflow.com/questions/699 ... r-from-app
Мобильная версия