Фон:
У меня тонкий API-интерфейс, созданный и в настоящее время работающий в локальном домене, например localhost / api
У меня мобильное приложение, использующее ионную инфраструктуру (основано наangular) и иметь следующий код, использующий httpClient как http:
let accessurl = this.general.apiURL + '/v2/update/status/' + this.machineToChange;
const headers = new HttpHeaders()
.set('Authorization', 'Bearer: ' + this.general.apiKey);
this.http.put(accessurl, {
statusFuelled: 1
}, { headers: headers }).subscribe(result => {
console.log(JSON.stringify(result));
}, err => {
console.log(JSON.stringify(err));
});
Я пробовал каждый вопрос переполнения стека, который я мог найти, чтобы позволить slim framework отключить cors, вот только несколько:
$app->options('/update/status/{machineNo}', function ($request, $response) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
return $response->withStatus(200);
});
Или:
//http://stackoverflow.com/questions/18382740/cors-not-working-php
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
exit(0);
}
Или:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
header('Content-Type: application/json');
Или в .HTACCESS:
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
Header add Access-Control-Allow-Headers: Content-Type
и многих других промежуточных программах, использующих композитор.
Я также запустил код с Slim Website , но безуспешно.
Не сработало, и это доставляет мне столько хлопот, что я просто хочу, чтобы CORS был отключен навсегдатак как это приносит больше вреда, чем пользы.
Я понятия не имею, где проблема вызвана, неправильный запрос httpClient или CORS, являющаяся болью, как обычно.
Если кто-то может помочь, пожалуйста, дай мне знать.
Я использую PHP 5.6 из-за ограничений сервера, поэтому промежуточное ПО, такое как tuupola / cors, не будет работать из-за того, что PHP <7 </p>
Некоторые ошибки:
Броски в Safari: Не удалось загрузить ресурс: предварительный ответ не выполнен
Chrome Throws: ответ на предварительный запрос не прошел проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».Origin 'http://localhost:8100' поэтому не допускается.Ответ имеет HTTP-код состояния 405.
Chrome также выбрасывает: ОПЦИИ http://localhost/api/v2/update/status/{ID} 405 (метод не разрешен)