【发布时间】:2026-01-19 00:00:02
【问题描述】:
我正在尝试从我的 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 阅读了this,它说只有某些 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!:
【问题讨论】:
-
您有任何广告拦截器吗?如果是,请禁用它。
-
"如您所见,$username 具有空白值" — 我们看不到这一点(尽管我希望您正在发出 JSON 格式的请求并尝试从 @987654327 读取@)。如果你有一个 CORB 错误阻止它,你是如何阅读响应的?
-
不,我没有任何广告拦截器。
标签: javascript php reactjs cross-origin-read-blocking