Для того, чтобы по-быстрому воспроизвести ситуацию предлагаю использовать express-generator.
После создания "стандартного" приложения на фреймворке Express с помощью express-generator (инструкция) подредактируем код файла app.js - сразу после "статики" и перед "маршрутами" добавим middleware для вывода в консоль данных, необходимых для понимания сути вопроса:
... app.use(express.static(path.join(__dirname, 'public'))); app.use(function(req, res, next) { var date = req.query.date || req.body.date, timestamp = Date.parse(date), fromTimestamp = new Date(timestamp); console.log('req.method: %s\ndate: %s\ntimestamp: %s\nfromTimestamp: %s\n', req.method, date, timestamp, fromTimestamp); next(); }); app.use('/', routes); ...
Получим текущую дату и приведем ее к UTCString, я сделаю это в Node.js REPL:
Запускаем приложение.
Пока мы отправляем запросы с помощью cURL все идет как надо:
- curl -X POST -H "Content-Type: application/json" -d '{"date": "Sun Sep 14 2014 09:55:54 GMT+0400 (Московское время (зима))"}' http://localhost:3000
- curl -X GET http://localhost:3000 --data-urlencode "date=Sun Sep 14 2014 09:55:54 GMT+0400 (Московское время (зима))"
Но если попытаться воткнуть дату в адресную строку браузера, получаем не совсем то, что ожидаем:
- http://localhost:3000/?date=Sun Sep 14 2014 09:55:54 GMT+0400 (Московское время (зима))
А если привести дату к UTCString, то все норм:
- http://localhost:3000/?date=Sun, 14 Sep 2014 05:55:54 GMT
А теперь внимание, вопрос: найди три отличия на этих рисунках :).
Комментариев нет:
Отправить комментарий
Комментарий будет опубликован после модерации