Здравствуйте, всякий раз, когда я пытаюсь вернуть данные из php для реагирования компонента, я получаю эту ошибку
Access to XMLHttpRequest at 'http://localhost/loginpage/src/components/login.php' from origin 'http://localhost:3005' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Login.js:25
Error: Network Error at createError (createError.js:17) at XMLHttpRequest.handleError (xhr.js:87)
когда я использую echo, я получаю данные, но не из операторов return или print_r.
Я использую SQL в качестве языка запросов и axios для отправки запроса.
Используемый метод:
handleClick(event){
axios({
method: 'post',
url: 'http://localhost/loginpage/src/components/login.php',
headers: { 'content-type': 'application/json' },
data: this.state
})
.then(response => {
console.info(response.data);
})
.catch(error => {
console.info(error);
});
}
и мой файл php
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: *");
$data = json_decode(file_get_contents("php://input"), TRUE);
$username = $data['username'];
$password = $data['password'];
$host = 'localhost';
$dbname = 'users';
$user= 'root';
$pass = '';
$conn = new mysqli($host, $user, $pass);
// Checking connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$conn->select_db("userss");
$result = "SELECT * FROM UserDetail WHERE email='$username' AND password='$password';";
$datas = [];
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$a = {
id:$row["id"],
fname:$row["firstname"],
lname:$row["lastname"],
email:$row["email"]
}
array_push($datas, $a);
}
print_r($datas);
} else {
echo "0 results";
}
$conn->close();
?>
Я не знаю, как использовать CORS, поэтому, пожалуйста, дайте мне ответ в виде кода, который я могу использовать или которым я могу заменить свой код. Кто-нибудь, пожалуйста, предоставьте хорошее решение. Я новичок в реакции.
password_hash() и password_verify(). Если вы используете версию PHP ниже 5.5 (а я надеюсь, что это не так, В самом деле), вы можете использовать библиотека password_compat, чтобы получить ту же функциональность.
$a = {id: $row['id'], ...} недопустимый синтаксис PHP. Вот как вы создаете объекты в JavaScript, а не в PHP.
пожалуйста, предоставьте ответ в виде кода, так как я не очень понимаю ответ, который вы говорите, что мой вопрос является дубликатом.
Тогда вам нужно сначала прочитать дубликат еще немного и попытаться понять его. Вы также можете прочитать о CORS во многих других местах в Интернете. В противном случае вы будете продолжать делать ту же ошибку. Теперь вопрос закрыт, к сожалению, никто не может добавить код ответа. Убедитесь, что вы понимаете, что такое предварительный запрос, и убедитесь, что ваш сервер обрабатывает его надлежащим образом — все заголовки CORS должны присутствовать в этом запросе, а также в основном заголовке.
@MagnusEriksson, пожалуйста, забудьте об этом. таким образом я пробовал это разными методами, поэтому код остался. Не отвечает даже простое "Привет"
по крайней мере то, что я делаю неправильно.
Дело в том, почему я получаю данные с помощью echo . Если это проблема CORS, я не должен получать даже эхо. Но я получаю





