我正在尝试从我的 React 应用程序(通过 Axios)向我用 PHP 编写的服务器端 API 发出 POST 请求。
我已经在响应端添加了这些标头。
header( 'Access-Control-Allow-Origin: *' );
header( 'Access-Control-Allow-Methods: GET, POST, PUT, DELETE' );
header( 'Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With, X-PINGHEADER' );
但我现在面临的问题是,
我知道它发出了 POST 请求,但它阻止了通过它发送的 post 数据。我从 Mozilla 读到这个,它说只有某些 Content-Type 允许通过 CORS,但我需要以 application/json 格式发送我的数据。
我确实将请求的 Content-Type 标头更改为 x-www-form-urlencoded 并且它确实收到了数据,因为似乎 CORS 不会阻止它。但是当我把它改回 application/json 时,它没有。
这是我的 React 应用程序的请求代码。
import axios from 'axios';
const api = axios.create({
baseURL: CONST.API_URL,
params: {
key: process.env.REACT_APP_API_KEY
}
});
api.post('/create_user', { username: "johndoe" }).then(o => {
// something goes here..
const { data } = o;
console.log(data.message);
}).catch(e => console.error(e));
这是我的示例回复:
<?php
header( 'Access-Control-Allow-Origin: *' );
header( 'Access-Control-Allow-Methods: GET, POST, PUT, DELETE' );
header( 'Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With, X-PINGHEADER' );
$username = $_POST['username'];
$response = array(
"message" => "Hello $username!",
);
echo json_encode($response);
exit;
?>
如您所见, $username 具有空白值,因为 CORB 事物阻止了发布数据。
我期望Hello johndoe!
上面的代码: