- 我有一个用PHP写的服务器,它有一些路由
- Postman 的路线很好
- 但是当我在Axios上使用React时,它给出了错误
- 下面是PHP代码
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: GET,POST,DELETE,OPTIONS");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
字符串
这是我如何向Postman发出请求的这是我在Postman中输入的原始JSON数据
{
"data1" : "data1"
}
型
这就是我如何使用React和Axios进行post请求
await axios("url", {
data: JSON.stringify({ "data1" , "data1" }),
method: "POST",
headers: {
"Content-Type": "application/json",
},
});
型
url是相同的,但它给网络错误
我希望我的axios请求能像在postman上一样完成
的数据
的
我也试过这个配置,但不工作
<?php
// Allow from any origin
if(isset($_SERVER["HTTP_ORIGIN"]))
{
// You can decide if the origin in $_SERVER['HTTP_ORIGIN'] is something you want to allow, or as we do here, just allow all
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
}
else
{
//No HTTP_ORIGIN set, so we allow any. You can disallow if needed here
header("Access-Control-Allow-Origin: *");
}
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Max-Age: 600"); // cache for 10 minutes
if($_SERVER["REQUEST_METHOD"] == "OPTIONS")
{
if (isset($_SERVER["HTTP_ACCESS_CONTROL_REQUEST_METHOD"]))
header("Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT"); //Make sure you remove those you do not want to support
if (isset($_SERVER["HTTP_ACCESS_CONTROL_REQUEST_HEADERS"]))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
//Just exit with 200 OK with the above headers for OPTIONS method
exit(0);
}
//From here, handle the request as it is ok
型
2条答案
按热度按时间11dmarpk1#
由于您在本地运行代码,请尝试使用electronjs。它解决了CORS问题。你甚至不需要轴。
iibxawm42#
OK guyz,现在我明白了问题所在,我在000webhost中托管了我的PHP API,这个主机提供商不支持OPTIONS方法,这是一个只由浏览器(而不是 Postman )发出的飞行前请求方法。这就是为什么它在Postman中工作,而不是在React中。