HttpRequest 에서 흔히 볼 수 있 는 네 가지 Content-Type
15378 단어 request
HTTP/1.1 프로 토 콜규정된 HTTP 요청 방법 은 OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT 등 몇 가지 가 있다.그 중에서 POST 는 일반적으로 서버 에 데 이 터 를 제출 하 는데 본 고 는 주로 POST 가 데 이 터 를 제출 하 는 몇 가지 방식 을 토론 한다.
HTTP 프로 토 콜 은 ASCII 코드 로 전송 되 고 TCP/IP 프로 토 콜 위 에 세 워 진 응용 층 규범 임 을 알 고 있 습 니 다.HTTP 요청 을 세 부분 으로 나 누 는 것 을 규범화 합 니 다.상태 줄,요청 헤더,메시지 주체 입 니 다.다음 과 같다.
<method> <request-URL> <version>
<headers>
<entity-body>
프로 토 콜 은 POST 가 제출 한 데 이 터 를 메시지 주체(entity-body)에 넣 어야 한다 고 규정 하고 있 지만,프로 토 콜 은 데이터 가 어떤 인 코딩 방식 을 사용 해 야 하 는 지 규정 하지 않 았 다.실제로 개발 자 는 메시지 주체 의 형식 을 스스로 결정 할 수 있 으 며 마지막 으로 보 낸 HTTP 요청 이 위의 형식 을 만족 시 키 기만 하면 된다.하지만 데 이 터 를 보 내 려 면 서버 에서 분석 에 성공 해 야 의미 가 있다.일반 서버 언어php,python등 과 그들의 framework 는 흔히 볼 수 있 는 데이터 형식 을 자동 으로 분석 하 는 기능 을 내장 하고 있다.서버 는 요청 헤더headers)의 Content-type 필드 에 따라 요청 한 메시지 주체 가 어떤 방식 으로 인 코딩 되 었 는 지 알 고 주 체 를 분석 합 니 다.그래서 POST 제출 데이터 방안 은 Content-Type 과 메시지 주체 인 코딩 방식 두 부분 을 포함한다.본 격 적 으로 소개 하 겠 습 니 다.
application/x-www-form-urlencoded
이것 은 아마도 가장 흔히 볼 수 있 는 POST 가 데 이 터 를 제출 하 는 방식 일 것 이다.브 라 우 저의 네 이 티 브 form 폼 입 니 다.enctype 속성 을 설정 하지 않 으 면 최종 적 으로 application/x-ww-form-urlencoded 방식 으로 데 이 터 를 제출 합 니 다.요청 은 다음 과 같 습 니 다.
POST http://www.example.com HTTP1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8
title=test&sub=1&sub=2&sub=3
우선,Content-Type 은 application/x-www-form-urlencoded 로 지정 되 었 습 니 다.그 다음 에 제출 한 데 이 터 는 key 1=val 1&key 2=val 2 방식 으로 인 코딩 되 었 고 key 와 val 은 모두 URL 코드 를 바 꾸 었 다.대부분의서버언어 는 이런 방식 에 대해 좋 은 지 지 를 가지 고 있다.예 를 들 어 PHP 에서$POST['title']title 의 값 을 획득 할 수 있 습 니 다,$POST[sub]는 sub 배열 을 얻 을 수 있 습 니 다.우리 가 Ajax 로 데 이 터 를 제출 할 때 도 이런 방식 을 사용 하 는 경우 가 많다.예컨대 JQuery 화해시키다 QWrap 의 Ajax,Content-Type 의 기본 값 은 모두"application/x-ww-form-urlencoded"입 니 다.charset=utf-8」。
multipart/form-data
이것 은 또 흔히 볼 수 있 는 POST 데이터 제출 방식 이다.폼 을 사용 하여 파일 을 업로드 할 때 form 의 enctyped 를 이 값 과 같 게 해 야 합 니 다.요청 예제 직접 보기:
POST http:
//www
.example.com HTTP
/1
.1
Content-Type:multipart
/form-data
; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name=
"text"
title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name=
"file"
; filename=
"chrome.png"
Content-Type: image
/png
PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--
이 예 는 좀 복잡 하 다.먼저 서로 다른 필드 를 분할 하 는 데 사용 되 는 boundary 를 만 들 었 습 니 다.본문 내용 과 중복 되 지 않도록 boundary 는 길 고 복잡 합 니 다.그리고 Content-type 에 서 는 데이터 가 mutipat/form-data로 인 코딩 되 었 으 며,이번 요청 의 boundary 는 어떤 내용 인지 밝 혔 다.메시지 주체 에 서 는 필드 개수 에 따라 여러 구조 가 유사 한 부분 으로 나 뉘 는데 각 부분 은–boundary 로 시작 하여 내용 에 따라 정 보 를 설명 한 다음 에 리 턴 하고 마지막 으로 필드 의 구체 적 인 내용(텍스트 또는 바 이 너 리)입 니 다.파일 을 전송 했다 면 파일 이름과 파일 형식 정 보 를 포함 해 야 합 니 다.메시지 주 체 는 마지막 으로–boundary–표시 로 끝 납 니 다.mutipat/form-data 에 대한 자세 한 정 의 는 바로 가 십시오. rfc1867 살펴보다이런 방식 은 일반적으로 파일 을 업로드 하 는 데 사용 되 는데,각 서버 언어 도 그것 에 대해 좋 은 지 지 를 가지 고 있다.
위 에서 언급 한 이 두 가지 POST 데이터 의 방식 은 모두 브 라 우 저 원생 이 지원 하 는 것 이 고 현 단계 원생 form 폼이 두 가지 방식 만 지원 합 니 다.도 있다.그러나 점점 더 많은 웹 사이트,특히 WebApp 에 따라 모두 Ajax 를 사용 하여 데이터 상호작용 을 한 후에 우 리 는 새로운 데이터 제출 방식 을 정의 하여 개발 에 더 많은 편 의 를 가 져 다 줄 수 있다.
application/json
application/json 이라는 Content-Type 은 응답 헤드 로 서 낯 설 지 않 을 것 입 니 다.실제로 이 를 요청 헤더 로서버메시지 주체 가 직렬 화 된 JSON 문자열 임 을 알려 주 는 사람들 이 늘 고 있다.JSON 규범 의 유행 으로 저 버 전 IE 를 제외 한 각 브 라 우 저 는 JSON.stringify 를 원생 지원 하고 서버 언어 도 JSON 을 처리 하 는함수.가 있어 JSON 을 사용 하 는 데 어려움 을 겪 지 않 습 니 다.
JSON 형식 은 키 보다 훨씬 복잡 한 구조 화 된 데 이 터 를 지원 한 다 는 점도 유용 하 다.제 가 몇 년 전에 프로젝트 를 했 을 때 제출 해 야 할 데이터 차원 이 매우 깊 었 던 것 을 기억 합 니 다.저 는 데이터 JSON 을 서열 화 한 후에 제출 한 것 입 니 다.그러나 당시 에 나 는 JSON 문자열 을 val 로 하고 키 쌍 에 넣 어 x-ww-form-urlencoded 방식 으로 제출 했다.
구 글 AngularJS Ajax 기능 의 기본 값 은 JSON 문자열 을 제출 하 는 것 입 니 다.예 를 들 어 다음 코드:
var
data = {
'title'
:
'test'
,
'sub'
: [1,2,3]};
$http.post(url, data).success(
function
(result) {
...
});
마지막 으로 보 낸 요청 은:POST http://www.example.com HTTP1.1
Content-Type: application/json;charset=utf-8
{"title":"test","sub":[1,2,3]}
이런 방안 은 복잡 한 구조 화 된 데 이 터 를 편리 하 게 제출 할 수 있 고 특히 RESTful 의 인터페이스 에 적합 하 다.크롬 자체 개발 자 도구,Firebug,Fiddler 와 같은 대형 패키지 도 구 는 트 리 구조 로 JSON 데 이 터 를 보 여 주 며 매우 우호 적 입 니 다.그러나 일부서버언어 는 아직 이런 방식 을 지원 하지 않 았 다.예 를 들 어php는$를 통과 할 수 없다.POST 대상 은 위의 요청 에서 내용 을 얻 습 니 다.이 럴 때 는 직접 처리 해 야 합 니 다.요청 헤더 에 Content-Type 이 application/json 일 때 부터php://input 리 획득 원시 입력 흐름,재 jsondecode 가 대상 이 되다.일부 phop 프레임 워 크 는 이미 이렇게 하기 시작 했다.물론 AngularJS 는 x-ww-form-urlencoded 방식 으로 데 이 터 를 제출 하도록 설정 할 수 있 습 니 다.필요 하 시 면 참고 하 세 요이 문장.
text/xml
내 블 로그 이전XML-RPC 얘 기 했 었 어 요.(XML Remote Procedure Call).이것 은 HTTP 를 전송 프로 토 콜 로 사용 하고 XML 을 인 코딩 방식 으로 하 는 원 격 호출 규범 이다.전형 적 인 XML-RPC 요청 은 다음 과 같 습 니 다.
POST http:
//www
.example.com HTTP
/1
.1
Content-Type: text
/xml
<?xml version=
"1.0"
?>
<methodCall>
<methodName>examples.getStateName<
/methodName
>
<params>
<param>
<value><i4>41<
/i4
><
/value
>
<
/param
>
<
/params
>
<
/methodCall
>
XML-RPC 프로 토 콜 은 간단 하고 기능 이 충분 하 며 각종 언어의 실현 이 있다.그것 의 사용 도 매우 광범 위 하 다.예 를 들 어 워드 프레스 의 XML-RPC Api,검색엔진 의 ping 서비스등등.JavaScript 에서 도기 존 창고이러한 방식 으로 데이터 상호작용 을 지원 하여 기 존의 XML-RPC 서 비 스 를 잘 지원 할 수 있 습 니 다.그러나 저 는 개인 적 으로 XML 구조 가 너무 비대 해서 일반적인 장면 은 JSON 을 사용 하 는 것 이 더 유연 하고 편리 하 다 고 생각 합 니 다.전재 설명:사랑 의 기원»네 가지 일반적인 POST 제출 데이터 방식
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java에서 HttpRequest Header를 가져오는 몇 가지 방법이 포털은 모든 응용 프로그램의 입구이다. 사용자가 포털에 로그인한 후에 다른 시스템에 들어가면 유사한 단일 로그인(SSO)이 필요하다.각 서브시스템에 들어갈 때 다시 로그인할 필요가 없다. 물론 유사한 기능은 전문...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.