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-handle-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', но это не влияло на сервер до тех пор, пока я не модифицировал функцию 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();
};