WedX - журнал о программировании и компьютерных науках

Как я могу получить необработанное тело запроса в облачной функции Google?

Мне нужно необработанное тело запроса, чтобы иметь возможность переваривать его SHA-1 для проверки заголовка веб-перехватчика Facebook X-Hub-Signature, который передается вместе с запросом к моей функции Firebase (работающей в Google Cloud Functions).

Проблема в том, что в подобных случаях (с заголовком Content-Type: application/json) GCF автоматически анализирует тело, используя bodyParser.json(), который потребляет данные из потока (что означает, что он не может быть снова использован в цепочке промежуточного программного обеспечения Express) и предоставляет только проанализированный объект javascript как req.body . Буфер необработанного запроса отбрасывается.

Я попытался предоставить приложение Express для functions.https.onRequest(), но похоже, что оно запускается как дочернее приложение или что-то в этом роде с уже проанализированным телом запроса, точно так же, как когда вы передаете простой обратный вызов запроса-ответа в onRequest().

Есть ли способ отключить GCF от парсинга тела за меня? Или я мог бы как-то указать свой собственный verify обратный вызов bodyParser.json()? Или есть другой способ?

PS: Я впервые обратился в службу поддержки Firebase по этому поводу неделю назад, но из-за отсутствия ответа я пробую это здесь сейчас.



Ответы:


1

Теперь вы можете получить необработанное тело от req.rawBody. Возвращает Buffer. Дополнительные сведения см. В документации.

Спасибо Нобухито Куросе за публикацию в комментарии.

14.05.2018
  • Typescript распознает rawBody, если он импортирован из functions.https.Request, но не распознает поле, если оно импортировано из functions.Request 22.06.2021

  • 2

    К сожалению, промежуточное ПО по умолчанию в настоящее время не позволяет получить необработанное тело запроса. См. Доступ к не проанализированному тексту JSON в функциях HTTP (# 36252545).

    22.03.2017
  • Это очень плохо. Я пометил эту проблему звездочкой и надеюсь, что в ближайшее время для нее будет добавлена ​​какая-то поддержка. Это может заставить нас частично или полностью переключиться на Amazon, но до сих пор мне действительно нравился Firebase. Спасибо за информацию и ссылку! 24.03.2017
  • Было обсуждение (помимо публичной заявки), и несколько гуглеров, включая меня, испытывают от этого боль. Я не могу придерживаться графика, но это нужно исправить, поскольку веб-хуки - одна из наших критических историй. Просто он не попал в бета-версию. 24.03.2017

  • 3
  • Привет, вы можете также дать объяснение вместе со своим кодом, чтобы быть немного более понятным 27.11.2020
  • Новые материалы

    Как создать диаграмму градиентной кисти с помощью D3.js
    Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


    Для любых предложений по сайту: [email protected]