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://input
raw 요구 본문을 읽을 수 있습니다.
$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
'programing' 카테고리의 다른 글
Disconsid Py를 사용하는 Python3 및 MariaDB (0) | 2022.12.26 |
---|---|
C++ 표준 간 변환:: 벡터 및 C 어레이(복사하지 않음) (0) | 2022.12.26 |
Java에서 Selenium-WebDriver에 몇 초 동안 대기하도록 요청하려면 어떻게 해야 하나요? (0) | 2022.12.26 |
도커 컨테이너, 메모리 소비량 및 로그 (0) | 2022.12.26 |
예외가 발생하지 않았는지 테스트하려면 어떻게 해야 합니까? (0) | 2022.12.26 |