programing

file_get_contents("php://input") 또는 $HTTP_RAW_POST_DATA, JSON 요청 본문을 가져오려면 어떤 것이 좋습니까?

newsource 2022. 12. 26. 20:28

file_get_contents("php://input") 또는 $HTTP_RAW_POST_DATA, JSON 요청 본문을 가져오려면 어떤 것이 좋습니까?

file_get_contents("php://input")또는$HTTP_RAW_POST_DATA· JSON 요청 본문을 입수하려면 어느 것이 좋습니까?

그리고 어떤 요청 유형(GET또는POST)를 사용하여 클라이언트 측을 사용할 때 JSON 데이터를 전송해야 합니다.XmlHTTPRequest?

제 질문은 이 답변에서 영감을 얻었습니다.JSON을 PHP에 컬로 게시하는 방법

이 답변에서 인용:

프로토콜 관점에서 보면file_get_contents("php://input")실제로는 http 멀티파트 폼 데이터를 처리하지 않기 때문에 더 정확합니다.

정말로.php://inputraw 요구 본문을 읽을 수 있습니다.

$HTTP_ 대신 메모리 사용량이 적습니다.RAW_POST_DATA이며 특별한 php.ini 지시사항은 필요하지 않습니다.참조처

php://input에서는 사용할 수 없습니다.enctype="multipart/form-data".

php://input은 요청 본문에서 원시 데이터를 읽을 수 있는 읽기 전용 스트림입니다.POST 요청의 경우 $HTTP_ 대신 php://input을 사용하는 것이 좋습니다.RAW_POST_DATA는 특별한 php.ini 디렉티브에 의존하지 않습니다.또한 $HTTP_의 경우RAW_POST_DATA는 디폴트로는 입력되지 않습니다.Always_populate_raw_post_DATA를 활성화하는 대신 메모리 사용량이 적을 수 있습니다.

출처 : http://php.net/manual/en/wrappers.php.php.

file_get_contents(php://input) - 원시 POST 데이터를 가져와 API를 작성하고 PHP에 의해 $_POST로 디코딩할없는 XML/JSON/... 입력을 필요로 할 때 사용해야 합니다.를 들어 다음과 같습니다.

우편 JSON 문자열로 송신하다

<input type="button" value= "click" onclick="fn()">
<script>
 function fn(){


    var js_obj = {plugin: 'jquery-json', version: 2.3};

    var encoded = JSON.stringify( js_obj );

var data= encoded


    $.ajax({
  type: "POST",
  url: '1.php',
  data: data,
  success: function(data){
    console.log(data);
  }

});

    }
</script>

1. 1개

//print_r($_POST); //empty!!! don't work ... 
var_dump( file_get_contents('php://input'));

JSON 데이터의 경우, 「애플리케이션/json」콘텐츠 타입으로 POST 하는 것이 훨씬 간단합니다.GET을 사용하는 경우 파라미터에 JSON을 URL로 인코딩해야 하는데 좀 복잡합니다.또, POST를 할 때는 사이즈 제한이 없습니다.GET의 사이즈는 매우 한정되어 있으면(최대 4K).

요청을 보내는 방법에는 일반적인 규칙이 적용됩니다.정보(예: 부분적인 검색 '힌트' 결과 또는 표시할 새 페이지 등)를 가져오려는 경우 GET을 사용할 수 있습니다.전송되는 데이터가 변경 요청의 일부인 경우(데이터베이스 업데이트, 레코드 삭제 등)POST 를 사용합니다.

서버측에서는, 투고/취득 데이터 블록 전체를 한 번에 취득하는 경우를 제외하고, raw 입력을 사용할 필요가 없습니다.필요한 정보는 통상대로 _GET/_POST 어레이를 통해 취득할 수 있습니다.MooTools/j 등의 AJAX 라이브러리쿼리는 실제 AJAX 호출 및 폼 데이터를 적절한 형식으로 인코딩하는 어려운 부분을 처리합니다.

두 번째 질문은 간단합니다.GET은 서버 측과 브라우저 측 모두에서 1~2킬로바이트의 크기 제한이 있기 때문에 POST를 통해 대량의 데이터를 전송해야 합니다.

언급URL : https://stackoverflow.com/questions/2731297/file-get-contentsphp-input-or-http-raw-post-data-which-one-is-better-to