Ошибка CORS, заголовок Access-Control-Origin отсутствует, но заголовок установлен - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь сделать Post-запрос к PHP API, но получаю ошибку «заголовок Access-Origin-Control не установлен на ресурсе», но заголовок установлен.Когда я делаю запрос с почтальоном, все в порядке, и вы можете увидеть в ответе, что заголовок установлен.

Я уже пытался установить заголовок на *, но это не помогло.

Угловой

  createUser(formData: FormData) {
      const httpOptions = {
        headers: new HttpHeaders({
          'Content-Type': 'multipart/form-data',
        })
      };

      return this.http.post(this.apiURL + 'create_user', formData, httpOptions);
  }

PHP

<?php
header("Access-Control-Allow-Origin: http://localhost:4200");
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
/**
 * Creates a User.
 */


require 'database.php';

$cost = 10;
$user = array();
$username=$_POST["username"];
$email=$_POST["email"];
$password=$_POST["password"];

$password_hash = password_hash($password, PASSWORD_BCRYPT, ["cost" => $cost]);

$resultCreate = pg_query_params($con, "INSERT INTO wriggling_snakes.users (email, username, password) VALUES ($1, $2, $3)", array($email, $username, $password_hash));
$resultFind = pg_query($con, "SELECT id, username FROM wriggling_snakes.users WHERE wriggling_snakes.users.email='$email'");
if(!$resultFind){
    echo "Error";
}else {
    $i = 0;
    while ($row = pg_fetch_assoc($resultFind)) {
        $user['id'] = $row['id'];
        $user['username'] = $row['username'];
        $i++;
    }

    echo json_encode($user);
}

Почтальон Ответ Заголовки

Дата → Чт, 06 июня 2019 20:58:13 GMT Сервер → Apache / 2.4.39 (Unix) OpenSSL / 1.0.2r PHP / 7.1.29 mod_perl / 2.0.8-dev Perl / v5.16.3 X-Powered-By → PHP / 7.1.29 Access-Control-Allow-Origin → http://localhost:4200 Доступ-Control-Allow-Methods → PUT, GET, POST, DELETE Access-Control-Allow-Headers → Origin, X-Requested-With, Content-Type, Accept Content-Length → 30 Keep-Alive → timeout = 5, max =100 Соединение → Keep-Alive Content-Type → text / html;кодировка = UTF-8

Ответы [ 2 ]

0 голосов
/ 29 июня 2019

RewriteCond% {REQUEST_METHOD} ОПЦИИ RewriteRule ^ (. *) $ $ 1 [R = 200, L]

добавить эту строку в файл .htacess

0 голосов
/ 07 июня 2019

Навигаторы проверяют разрешенные источники, чтобы сделать запрос, поэтому Postman получает запрос нормально, он не нуждается в них. Итак, вам нужно проверить, правильно ли PHP устанавливает заголовки, потому что проблема тут же. Я не уверен, что вы перехватываете запросы с каким-то промежуточным программным обеспечением с CORS, возможно, это может быть полезно.

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