我正在开发一个todo应用程序,第一次使用React和PHP。使用Apache(XAMPP)。
App.js:
import { useEffect, useState } from "react";
const App = () => {
const [todos, setTodos] = useState([]);
useEffect(() => {
fetch(`${process.env.REACT_APP_ENDPOINT}`, {
method: "POST",
body: JSON.stringify({
action: "todos",
}),
})
.then((response) => response.json())
.then((data) => setTodos(data));
}, []);
return (
<div>
<h1>Todo App</h1>
</div>
);
};
export default App;
index.php:
<?php
header('Access-Control-Allow-Origin: *');
try {
$db = new PDO("mysql:host=localhost;dbname=todo", "mustafa", "12345");
} catch (PDOException $e) {
die($e->getMessage());
}
$action = $_POST['action'];
switch ($action) {
case 'todos':
$query = $db->query("SELECT * FROM todos order by id desc")->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($query);
break;
}
虽然我有header('Access-Control-Allow-Origin: *')
,但它会抛出MissingAllowOriginHeader错误:
CORS策略已阻止从源“http://localhost:3000”访问“http://localhost/react-php-backend”的获取:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果一个不透明的响应满足了你的需求,将请求的模式设置为“no-cors”,以在禁用CORS的情况下获取资源。
给出这个错误的原因是什么?我该怎么办?因此,我无法连接数据库。
1条答案
按热度按时间w8ntj3qf1#
在2023年,当几乎所有的浏览器都需要严格的来源策略时,您需要修改您的标头,无论是在.htaccess中
在PHP内部
tbh,两个都可以……