2017-03-21 3 views
2

외부 당사자로부터 수신 webhook을 수신하는 API를 구축 중입니다. 내 애플리케이션에 대한 게시물 요청은 어떤 경우에는 몸이 부족합니다. 내 로그에 들어오는 요청은 다음 헤더로 표시됩니다.게시 요청 누락 페이로드

Accept:   */* 
Content-Length: 
Content-Type: application/json 

내용 길이는 비어 있습니다.

문제를 재현 할 수 없습니다. 지금까지 시도한 내용 :

  • 요청한 페이로드는 특정 제 3 자로부터 누락되었습니다. 그러나이 제 3 자에게 요청 bin과 같은 다른 콜백 URL을 제공하면 페이로드가 누락되지 않습니다.

  • 이 파티 소스를 테스트 환경에 연결했습니다. 정확히 동일한 설정 (전체 php.ini 확인)과 동일한 버전의 소프트웨어가 있습니다. 테스트 서버에서 요청은 페이로드로 수신됩니다.

  • Postman과 게시물 요청을 우리의 프로덕션 환경으로 보낼 때 webhooks는 페이로드로 수신됩니다.

  • 테스트 및 프로덕션 모두 https입니다. 우리의 프로덕션 서버에 HTTP 요청을 보내서 무슨 일이 일어 났는지 예상했는데 예상대로 오류가 발생하고 로그에 헤더가 수신되지 않습니다.

  • 24M에있는 PHP post_max_size를 확인했습니다.

  • 내 공용 폴더에 callback.php 파일을 만들고 타사에서이 대상으로 웹 훅을 보낼 때 페이로드가 포함 된 다음 코드를 사용하여 결과를 로그에 쓸 수 있습니다. 내가 나중에 내 Laravel 응용 프로그램에서 출력 php://input하는 경우에는 작동하지 않습니다 두 서버가 같은 PHP 버전 (php7)에서 실행중인

    $postdata = file_get_contents("php://input"); 
    $file  = fopen("webhook.log","w"); 
    echo fwrite($file,$postdata); 
    fclose($file); 
    

을, 나는에로 손해를보고 누구인지 다음에 시도하십시오.

+0

우편 번호? 또한 리디렉션되지 않았는지 확인하십시오. 페이로드는 요청이 리디렉션되는 경우 사라질 수 있습니다. –

+0

은 * 모든 * 특정 제 3 자에게 누락 된 페이로드입니까? – Sebas

+0

요청이 리디렉션되는지 여부를 어떻게 확인할 수 있습니까? 그렇다면 왜 같은 서버에 대한 다른 요청도 제거되지 않을까요? – wouthoekstra

답변

1

발견! 문제는 가상 호스트 구성에서 포트 80에서 443으로 리디렉션되었습니다. 이전에 게시물 요청에서 페이로드가 누락 된 일반적인 소스 인 것으로 보이는 리디렉션을 가능한 원인으로 해산했습니다. 이 동일한 서버에서 성공적으로 페이로드를받은 테스트 스크립트를 만들었습니다.

그러나이 테스트 스크립트는 내 응용 프로그램의 루트와 동일한 리디렉션의 대상이 아닌 서버 공용 폴더에 배치했습니다. 리다이렉트를 제거한 후 페이로드는 예상대로 수신됩니다.