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

使用XMLHttpRequest向GitHub Pages发送POST请求时遭遇405 Not Allowed错误求助

解决GitHub Pages上POST请求返回405 Not Allowed的问题

首先,核心问题是GitHub Pages是静态站点托管服务,仅支持GET/HEAD这类读取资源的HTTP方法,完全不支持POST、PUT、DELETE等会修改资源的请求。这就是你发送POST请求时返回405错误的根本原因——GitHub Pages的服务器直接拒绝了POST方法的请求,因为它没有能力处理这类需要修改数据的操作。

再看你的错误信息里的URL:POST https://<username>.github.io/test/%22https://<username>.github.io/test/data/data.json%22 405,这里的%22是双引号的URL编码,说明你的代码里可能存在字符串转义错误,比如不小心把URL包裹在了额外的引号里(比如原代码里的&quot;是HTML转义字符,实际写JS代码时应该用普通的双引号/单引号),不过这个是次要问题,即使修正了URL,POST请求依然会被GitHub Pages拒绝。

你可以采取的解决方案:

  • 放弃直接向GitHub Pages发POST请求:因为它本质是静态托管,没有后端逻辑来接收和处理你的POST数据,更无法修改仓库里的JSON文件。
  • 搭建后端服务处理POST请求:
    • 如果你想实现提交数据并修改JSON文件的功能,可以搭建一个简单的后端(比如Node.js + Express),接收POST请求后更新对应的文件(或者存储到数据库),然后将后端部署到支持Node.js的平台(比如Vercel、Heroku、Railway等)。
    • 也可以使用无服务器函数(比如Vercel Functions、Firebase Cloud Functions),这种方式不需要搭建完整的服务器,只需要写处理POST请求的函数即可。
  • 本地测试用模拟后端:如果只是想测试你的POST请求逻辑,可以用json-server这类工具快速搭建一个本地的REST API,它支持POST请求并能自动修改JSON文件,适合开发阶段测试。

代码里的小修正(虽然不解决405,但能修正URL错误):

把你代码里的HTML转义字符&quot;替换成普通的引号,比如:

myreq1.open("POST", "https://<username>.github.io/test/data/data.json");
// 或者用单引号
myreq1.open('POST', 'https://<username>.github.io/test/data/data.json');

这样可以避免URL里出现多余的转义引号,防止请求路径错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 20:52:36