2017-03-22 3 views
2

Google Fire 기능에서 실행되는 Firebase 기능에 요청과 함께 전달 된 Facebook webhook X-Hub-Signature 헤더를 SHA-1에서 소화 할 수 있도록 원시 요청 본문이 필요합니다.Google Cloud 기능에서 원시 요청 본문을 얻으려면 어떻게해야하나요?

문제 GCF 자동 스트림에서 데이터를 소비 bodyParser.json()을 사용하여 몸을 파싱 (a Content-Type: application/json 헤더)이 같은 경우에는 (가 빠른 미들웨어 체인에 다시 소비 될 수 있음을 의미)만을 파싱 제공한다는 자바 스크립트 객체는 req.body입니다. 원시 요청 버퍼는 버려집니다.

functions.https.onRequest()에 익스프레스 앱을 제공하려했으나 일반 요청 - 응답 콜백을 onRequest()으로 전달할 때와 마찬가지로 하위 애플리케이션 또는 요청 본문이 이미 파싱 된 것으로 실행되는 것 같습니다.

GCF가 나를 위해 본문을 구문 분석하지 못하게 할 방법이 있습니까? 또는 bodyParser.json()에 내 자신의 verify 콜백을 어떻게 든 지정할 수 있습니까? 아니면 다른 방법이 있습니까?

추신 : 저는 일주일 전에이 문제에 대해 Firebase 지원부에 먼저 연락했지만, 응답이 없으므로 지금 여기에서 시도 중입니다.

+1

나는 당신과 같은 상황에 있습니다. 원시 요청 페이로드를 "재생성"하려고했지만 실행 가능하지 않습니다. 보안 해결 방법은 끝점을 추측 할 수 없도록 임의 문자가있는 함수를 배포하는 것입니다. 나는 내 기사 [여기]에서 더 자세히 설명한다. (https://medium.com/@mrkevinze/regenerating-a-raw-request-payload-an-impossible-task-e4133fb2571) –

+1

이제 req에서 원시 몸을 얻을 수있다. rawBody. –

답변

2

기본 미들웨어는 현재 원시 요청 본문을 가져올 수있는 방법을 제공하지 않습니다. 참조 : Access to unparsed JSON body in HTTP Functions (#36252545).

+0

너무 나빠요. 나는 그 문제에 별표를 찍었고, 이것을위한 지원의 형태가 곧 추가 될 것을 희망한다. 이로 인해 우리는 부분적으로 또는 완전히 아마존으로 되돌아 갈 수 있었지만 지금까지는 오히려 Firebase을 즐겼습니다. 정보 및 링크를 제공해 주셔서 감사합니다. – Peter

+2

공개 된 티켓 외에 여러 가지 Google 직원이 나에게이 문제로 고통 받고 있습니다. 나는 일정을 잡을 수는 없지만 웹 갈고리가 우리의 비판적인 이야기 중 하나이기 때문에이 문제를 수정해야합니다. 베타 버전을 무의미하게 사용하지 않았습니다. –

관련 문제