2017-12-11 11 views
0

이 헤더의 작동 방식을 이해하는 데 어려움이 있습니다. 내가 다음 1의 경우 응답의 말을하자 특정 자원에 게시물을 요구하는 일부 JSON 문자열이며, 두번째 경우의 응답 .jar 파일입니다입니다 경우Http 헤더 인코딩 허용

간단히 내 질문에

입니다.

클라이언트는 accept-header : gzip을 포함해야합니다. 두 경우 모두 HTTP 요청을 보내는 동안 deflate가 발생합니다. 첫 번째 결과는 json 문자열이됩니다.

2. 응답이 이미 압축 된 경우 이미 압축 된 데이터에 대한 응답을 압축해도 문제가 발생하지 않습니까?

3. 나는 json 문자열이 수신되는 첫 번째 경우에 accept-encoding : gzip을 포함하면 발생합니다. 그래서 나는 내 응답으로 압축 데이터를받습니다. (압축 된 데이터 또는 응답으로 인코딩 된 데이터를 얻는 지 확실하지 않습니다. 압축 된 데이터는 .jar/.zip과 같은 압축 형식을 의미하며 인코딩 된 데이터는 원본 데이터의 인코딩 된 데이터를 의미합니다. 어느 쪽이 zip 또는 encode하고 있을까)?

4. 서버가 Contentype 헤더가있는 응답을 "application/octet-stream"으로 보냅니다. 이제는 accept-header를 사용해야합니다 : gzip, deflate

+0

"accept-encoding"이라고 말할까요? –

+0

예, 감사합니다. 편집했습니다. –

답변

1
  1. 예, 그렇습니다. JSON 페이로드가 큰 경우이를 압축하면 많은 의미가 있습니다.

  2. 단지 오버 헤드입니다.

  3. 당신 수도 데이터를 gzip으로 압축받을 -하지 ZIP 파일을. 자세한 내용은 RFC 7230 및 RFC 7231을 읽으십시오.

  4. 페이로드의 인터넷 미디어 유형은 콘텐츠 코딩과 완전히 독립적입니다.

0

클라이언트는 Accept-Encoding HTTP 요청 헤더를 사용하여 압축 된 응답을 받아 들일 수 있음을 서버에 알릴 수 있습니다.

서버는 요청 헤더를 사용하여 압축 된 응답을 보내야하는지 여부를 결정할 수 있습니다. 헤더를 무시하고 압축되지 않은 응답을 보낼 수 있습니다 (효율성이 떨어질 수 있음). 헤더를 무시하고 항상 압축 된 응답을 보낼 수 있습니다 (클라이언트에게 디코딩 할 수없는 응답을 제공 할 위험이 있음). GZIP을, (

내가 클라이언트가 압축 된 응답을 처리 할 수있는 서버에게 하지에 어떤 이유로 생각할 수 없다 두 경우 모두에서 폐의 가정 :

한다 클라이언트는 수락 헤더 포함 그 사실은 사실입니다). 응답이 이미 압축되어있는 경우, 지금은 이미 압축 된 데이터에 대한 응답이 문제

을 만들지 않습니다 압축하는 그것은 바이트 거의 또는 전혀 절약을위한 프로세서 전력의 낭비가 무엇인지

.

클라이언트가 압축 된 응답을 처리 할 수 ​​없다고 말하는 것은 아닙니다. 서버에서 결정해야합니다.

json 문자열이 수신되는 첫 번째 경우에는 accept-encoding : gzip을 포함하면 어떻게됩니까?

그런 다음 클라이언트가 압축 된 응답을 받아 들일 수 있다고 서버에 알려줍니다.

그래서 나는 압축 된 응답을 보낼 수 있습니다 내 대답

서버 로 압축 된 데이터를받을 수 있습니다. 헤더를 무시할 수 있습니다.

는 "또는"여기가 아닌 응답으로 압축 된 데이터 또는 일부 인코딩 된 데이터를 얻을 경우

내가조차 확실하지 않다.

데이터는 압축 알고리즘을 사용하여 인코딩됩니다.

서버가 "응용 프로그램/octet-stream을"그냥 전송되는 데이터의 유형을 모르는 서버를 의미

같은 패키지 contentype 헤더와 응답을 보냅니다 말할 수 있습니다. "This is jar file"또는 "This is a jar file"이라는 말 대신에 "이게 뭔지는 모르겠다. 그것은 나에게 바이트의 흐름 일 뿐이다"라고 말하고있다. 그것은 변화를하지 않는, GZIP

을 수축 :

지금 받아 들일 헤더 사용하려면해야합니다.

서버가 데이터를 압축 할 수 있습니다. 압축되지 않은 데이터를 보낼 수 있습니다. Accept-Encoding 요청 헤더를 사용하여 둘 중 하나를 결정할 수 있습니다.