【问题标题】:Post request throws net::ERR_HTTP2_PROTOCOL_ERROR发布请求抛出 net::ERR_HTTP2_PROTOCOL_ERROR
【发布时间】:2024-01-22 18:05:01
【问题描述】:

使用对 API 的发布请求时出现这 2 个错误 (使用铬)

xhr.js:178 POST MY_API_URL net::ERR_HTTP2_PROTOCOL_ERROR createError.js:16 Uncaught (in promise) 错误:网络错误 XMLHttpRequest.handleError 处的 createError (createError.js:16) (xhr.js:83)

我正在做一个简单的 POST 请求 (反应代码):

const postData = async()=>{
    let res = await Axios.post('/terrenos', {'idTerreno':'0'} );
    console.log( res.data );
}

而在 API 方面,我只有这个用于调试(PHP 代码):

if( $_SERVER["REQUEST_METHOD"] === 'GET'){
    main($_GET);
}else if( $_SERVER["REQUEST_METHOD"] === 'POST'){
    echo(json_encode($_POST));
}

当我在正文中不发送任何内容时,它工作得很好(它返回一个空数组)

const postData = async()=>{
    let res = await 
    Axios.post('https://gpgpy.000webhostapp.com/papaProject/API/v2/query.php');
    console.log( res.data );
}

当我使用邮递员处理相同的请求时,无论有无正文,它也都可以工作。

【问题讨论】:

    标签: javascript php reactjs post request


    【解决方案1】:

    我在使用带有 React 的 Axios 和托管在 000webhost 上的 PHP Web 服务时遇到了同样的问题。它与 Postman 以及 vanilla fetch 函数完美配合。奇怪,好像是axios和000webhost的兼容性问题……

    我的解决方案是在我的 API 调用中使用 fetch 而不是 Axios,因为我没有看到在我的场景中使用 Axios 的任何特殊原因。 Here's a good example 了解如何使用 fetchPOST

    好像你在 3 个月前就问过这个问题,所以我希望你能在我回复之前找到解决方案。如果你成功使用 Axios 和 000webhost,请分享你的智慧?

    【讨论】:

    • 我实际上将我的后端切换到 Node JS 以使用比 000webhost 更好的服务和学习目的。但是我扣的一样,有些axios的默认配置肯定是和000webhost不兼容的。
    • 是的,老实说,000webhost 也一直让我失望……我后来发现它甚至不支持PUT,这真的很糟糕。最终为我制作的demo app 在本地运行json-server 而不是将其显示为实时网站...