我开发了一个 REST Web 服务器,可以处理 GET 和 POST 路由。
我的网络服务器是用 Pharo 开发的。
我使用简单的 .htaccess 将所有内容重定向到我的 Pharo 应用程序。
REST 查询发送到 HTTPS(端口 443)并重定向到 8079。
RewriteEngine on
RewriteRule (.*) http://localhost:8079/$1 [P]
每个人似乎都可以顺利完成 GET 查询。
然而,有些人对 POST 查询有问题。
飞行前检查似乎对每个人都没有问题。
但是,POST 请求本身仅对 some 机器/网络失败。
除了我之外,有些人能够同时进行飞行前检查和发布请求。
我还没有发现任何歧视因素。
Access to fetch at 'https://rest.didyouknowmythicplus.com/sug' from origin 'https://deplete.fyi' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
index-40151e28.js:90
POST https://rest.didyouknowmythicplus.com/sug net::ERR_FAILED 307 (Temporary Redirect)
我不知道为什么我有一个临时重定向,可能是因为 .htaccess 代理吗?
虽然错误消息谈到了 CORS,但在我看来,这不是问题所在。
在错误的情况下,POST 请求似乎无法到达 Pharo 网络服务器。
如果 Pharo Web 服务器没有收到请求,则无法将 CORS 添加到答案中。
后端是一个 vite/react 应用程序,使用相当简单的获取:
fetch(postUrl, {
method: "POST",
body: JSON.stringify({someData}),
headers: {
"Content-type": "application/json; charset=UTF-8",
}
})
知道什么可能导致 POST 请求仅在某些机器/网络上被错误处理吗? 我自己没有任何其他想法。
我尝试了很多事情,特别是:
相关问题: 是一个网络服务器端错误,所以这看起来不同 - CORS:为什么我获得成功的预检选项,但在发布时仍然出现 CORS 错误?
我最终使用 PUT 而不是 POST 方法修复了它 我不知道它是如何/为什么工作的:)