0 反对 收藏
我已按照迁移指南在我们的 Linux 服务器上本地设置了 Mongodb、NodeJS 和 Parse 服务器。我能够使用 REST API 登录游戏并下载仍由 Parse 的 S3 托管的游戏相关文件。但是,似乎每当我执行 POST 或 PUT http 请求时,我都会收到 404 未找到错误。
到目前为止我已经尝试过:
在 /etc/mongod.conf 中启用 HTTP 接口
检查了帖子 URL,它们看起来正确。为了退出,我向 http:///parse/logout 发送了一个帖子请求
通过以下链接处理 http 方法覆盖:https://stackoverflow.com/questions/24019489/node-js-express-4-x-method-override-not-handling-put-request
我怀疑服务器的设置可能有问题。有人遇到过类似的问题吗?
谢谢。
答案1
好的,我找到了解决方案。
注销问题:
Unity 的 WWW 类似乎只适用于有效的 postData。由于注销仅需要自定义 HTTP 请求标头,因此我在创建 WWW 实例时没有提供 postData。在我创建虚拟字节数组并将其传递给 WWW 构造函数后,它就可以正常工作了。
WWW www = new WWW(url, null, headers) // return 404
WWW www = new WWW(url, new byte[1], headers) // worked
放置问题:
我的请求标头将“X-HTTP-Method-Override”设置为 PUT,但它对服务器没有影响,直到我修改了 middlewares.js 中的 allowMethodOverride 函数
var allowMethodOverride = function allowMethodOverride(req, res, next) {
if (req.method === 'POST' && req.body._method) {
req.originalMethod = req.method;
req.method = req.body._method;
delete req.body._method;
}
// Also detect these override request header sent by Unity clients
else if (req.method === 'POST' && req.get('X-HTTP-Method-Override')) {
req.originalMethod = req.method;
req.method = req.get('X-HTTP-Method-Override');
}
next();
};