能否向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
相关产品推荐
相关产品推荐

