0 голосов против избранных
Я следовал руководству по миграции и установил сервер Mongodb, NodeJS и Parse локально на нашем сервере Linux. Я могу использовать REST API для входа в игру и загрузки файлов, связанных с игрой, которые по-прежнему хранятся в Parse S3. Однако кажется, что всякий раз, когда я выполняю HTTP-запросы POST или PUT, я получаю ошибку 404 not found.
Пока я пробовал:
Включение HTTP-интерфейса в /etc/mongod.conf
Проверил URL-адреса сообщений, и они выглядят правильно. Для выхода я отправляю почтовый запрос на http: /// parse / logout
Обработайте переопределение метода http по этой ссылке: https://stackoverflow.com/questions/24019489/node-js-express-4-x-method-override-not-handling-put-request
Я думаю, что что-то не так с настройкой на сервере. Кто-нибудь сталкивался с подобной проблемой?
Спасибо.
Хорошо, я нашел решение.
Проблема с выходом из системы:
Класс WWW Unity, похоже, работает только с действительными postData. Я не предоставлял postData при создании экземпляра WWW, поскольку для выхода из системы требовались только настраиваемые заголовки HTTP-запроса. Это сработало после того, как я создал фиктивный массив байтов и передал его конструктору WWW.
WWW www = new WWW(url, null, headers) // return 404
WWW www = new WWW(url, new byte[1], headers) // worked
Проблема PUT:
В моих заголовках запросов для параметра X-HTTP-Method-Override было установлено значение PUT, но это не повлияло на сервер, пока я не изменил функцию allowMethodOverride внутри middlewares.js.
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();
};