You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否向GitHub托管的文件发起POST请求?404错误如何解决?

问题

我创建了一个仓库,并在根目录放置了db.json文件,用json server将该文件托管在指定地址。代码里通过fetch请求该地址,尝试用POST方法保存一条消息时,遇到404 Not Found错误,附带Referrer Policy: strict-origin-when-cross-origin。想知道如何向GitHub托管的文件发起POST请求?这是否可行?

我的函数代码如下:

const [nome, setNome] = useState("");
const [mensagem, setMensagem] = useState("");

async function handleSubmit(e){
        e.preventDefault();
        try{
            const conexao = await fetch("https://my-json-server.typicode.com/priscilasilvaalves/jsoncaixaentrada.github.io/db", {
                method: "POST",
                headers: {
                    "Content-Type": "application/json"
                },
                body: JSON.stringify({
                    nome: nome,
                    mensagem: mensagem
                }),
            })
        }catch(error){
            console.log(error);
        }
    }
解答

1. 直接向GitHub托管文件发POST请求不可行

GitHub Pages是静态托管服务,只支持静态文件的GET请求,没有后端处理能力来修改仓库里的文件,所以POST、PUT这类修改请求根本无法生效。

2. my-json-server的使用误区

你当前的请求地址不对,my-json-server的POST请求要指向具体的数据集合路径,而非/db。比如你的db.json里如果有messages数组用来存消息,POST地址应该改成https://my-json-server.typicode.com/priscilasilvaalves/jsoncaixaentrada.github.io/messages。

另外要明确:my-json-server只是个模拟工具,不会真的修改你GitHub仓库里的db.json,所有修改都是临时的,刷新后就会恢复原样。如果需要持久化存数据,得自己搭后端,或者用Firebase、Supabase这类后端即服务。

3. 修复404错误的具体步骤

  • 调整db.json结构:确保里面有对应的数据集合,比如:
    {
      "messages": []
    }
    
  • 修改fetch请求地址:把/db换成对应的集合路径,比如/messages
  • 增加响应状态检查:在try块里添加代码,确认请求是否成功:
    if (!conexao.ok) {
      throw new Error(`请求失败,状态码:${conexao.status}`);
    }
    const result = await conexao.json();
    console.log("消息提交成功", result);
    

内容的提问来源于stack exchange,提问作者Priscila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 04:06:03