Accept * HTTP 헤더에서 q = 0.5 란 무엇입니까?


191
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

이 'q = % f'는 무엇을 의미합니까?

답변:


247

이를 상대적 품질 계수 라고합니다 . HTTP / 1.1 사양 §14.4 에서 볼 수 있듯이 사용자가 선호하는 언어를 0에서 1까지의 규모로 지정합니다 .

각 언어 범위에는 해당 범위에 의해 지정된 언어에 대한 사용자의 선호도 추정치를 나타내는 관련 품질 값이 주어질 수 있습니다. 품질 값의 기본값은 "q = 1"입니다. 예를 들어

  Accept-Language: da, en-gb;q=0.8, en;q=0.7

"나는 덴마크어를 선호하지만 영국 영어와 다른 유형의 영어를 받아 들일 것입니다."


26
고마워요! 그러나 왜 선호하는 순서대로 나열하지 않습니까?
kolypto

9
그렇다면 80 %의 적격 en-gb를 수락한다는 것은 정확히 무엇 을 의미합니까?
Pacerier

3
@Pacerier : 귀하의 웹 사이트가 다국어 인 경우 사용자는 미국 영어가 아닌 영국 영어로 콘텐츠를 제공하는 것을 선호합니다.
Tim Cooper

5
@TimCooper 왜 언어가 순서 나 선호에 따라 있지 않습니까? 다른 것보다 더 큰 것 외에는 가치가 중요하지 않습니다.
Rob

6
URL 또는 헤더에 암시 적 순서가 없는지 여부에 관계없이 매개 변수 목록 인 @kolypto에 이르기까지
JP Silvashy

37

사양에서 상대 품질 계수 라고합니다 .

각 매체 범위 뒤에는 상대 품질 계수를 나타내는 "q"매개 변수로 시작하는 하나 이상의 승인 매개 변수가 올 수 있습니다. 첫 번째 "q"매개 변수 (있는 경우)는 미디어 범위 매개 변수를 accept-params에서 분리합니다. 품질 요소는 사용자 또는 사용자 에이전트가 0에서 1까지의 qvalue 척도 (섹션 3.9)를 사용하여 해당 미디어 범위에 대한 상대적 선호도를 표시 할 수 있도록합니다. 기본값은 q = 1입니다.

...

Accept: audio/*; q=0.2, audio/basic

"오디오 / 기본을 선호하지만 품질이 80 % 감소한 후 가장 좋은 오디오 유형을 보내 주시기 바랍니다"라고 해석해야합니다.

또한보십시오:


2
정말 파티에 늦었지만 "품질이 80 % 하락한 후"는 무엇을 의미합니까? 오디오 파일의 품질이 아니라 선호도입니다. 아니면 내가 잘못 읽고 있습니까?
Mave

10
@Mave : 글쎄, 실제로 그것은 아마도 선호도의 척도로 사용될 것입니다. 그러나 원래의 공식에서는 인코딩 품질을 기반으로한다고 생각합니다. 예를 들어 FLAC 대 MP3를 고려하십시오. "최악의 경우 MP3 버전이 무손실 버전 품질의 50 %이면 나에게 보내십시오. 그렇지 않은 경우 FLAC 버전을 보내십시오." 그러한 품질을 정량화하는 방법과 그것이 실제로 사용되는지 여부는 모르겠지만 원래 의도라고 생각합니다.
Sebastian Paaske Tørholm

1
@ SebastianPaaskeTørholm 나는 이것에 대한 더 많은 정보를 찾기 위해 여기에 왔습니다. RFC 7231에는이 2 차적 의미를 암시하는 것으로 보이는 두 곳만이 있지만, 두 가지 의미가 서로 상충 될 수 있기 때문에 그것이 어떻게 의도 된 것인지는 분명하지 않습니다. 예를 들어 불가능한 것 같습니다 qvalue가 이런 식으로 오버로드되면 손실이 적은 유형보다 손실이 많은 유형에 대한 선호도를 표현합니다.
세미콜론

가장 선호하는 언어는 항상 헤더의 첫 번째 매개 변수입니까?
oldboy

@BugWhisperer 연결된 표준은 더 정교한 예제를 가지고 있습니다. 상담해주세요. :)
Sebastian Paaske Tørholm '

6

수락 언어 품질 매개 변수는 다음과 같이 이해 될 수 있습니다.

Accept-Language: pl_PL;q=0.8, en_US;q=0.2,다음 메시지에 서버와 통신하는 요청에 헤더를 첨부하여

서버,이 웹 사이트의 폴란드어 번역을 제공해주십시오. 품질이 >= %80%관련 품질 요소 인 경우에만 그렇게하십시오 . 품질이 좋은 경우 <80%-어쨌든 영어를 구사하기 때문에 영어 버전이 중요하지 않습니다.

예를 들어, 웹 페이지 콘텐츠 제공 업체 Accept-Language로서 우리는 웹 사이트가 영어를 전혀 사용하지 않는 외국인에게 적합하도록 헤더 파싱을 도입 할 수 있습니다 (번역 된 내비게이션도 도움이 될 것입니다 (내비게이션 만 번역 한 페이지는 , have q=0.1) (완전히 번역 된 콘텐츠가 q=0.9있고 완전히 번역 된 콘텐츠가 있고 원어와 번역 된 언어 콘텐츠를 모두 사용하는 원어민에 의해 검증 된 경우) q=0.99-콘텐츠의 의미가 완전히 변형되는 유일한 상황이므로)


가장 선호하는 언어는 항상 헤더의 첫 번째 매개 변수입니까?
oldboy

@BugWhisperer 예, 그러나 당신이 정말로 표준에 엄격하고 번역이 꽤 단순하거나 약한 경우-첫 번째 값을 건너 뛰고 싶을 수도 있습니다
test30

두 번째 값을 사용하는 것이 왜 더 엄격한가?
oldboy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.