q = 0.5 ในส่วนหัวเป็นยอมรับ * HTTP คืออะไร?


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

นี้เรียกว่าปัจจัยคุณภาพญาติ มันระบุว่าผู้ใช้ต้องการภาษาใดในระดับ 0 ถึง 1 ดังที่เห็นได้จากข้อมูลจำเพาะ HTTP / 1.1, §14.4 :

แต่ละช่วงภาษาอาจได้รับค่าคุณภาพที่เกี่ยวข้องซึ่งแสดงถึงค่าประมาณของการตั้งค่าของผู้ใช้สำหรับภาษาที่ระบุโดยช่วงนั้น ค่าคุณภาพเริ่มต้นที่ "q = 1" ตัวอย่างเช่น,

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

จะหมายถึง: "ฉันชอบภาษาเดนมาร์ก แต่จะยอมรับภาษาอังกฤษแบบอังกฤษและภาษาอังกฤษประเภทอื่น ๆ "


26
ดีมากขอบคุณ! แต่ทำไมไม่เพียงแค่เรียงตามลำดับที่ต้องการ
kolypto

9
ดังนั้นสิ่งที่ว่ามันหมายความว่าจะยอมรับ 80% qualitied en-GB?
Pacerier

3
@Pacerier: หมายความว่าในกรณีที่เว็บไซต์ของคุณพูดได้หลายภาษาผู้ใช้ต้องการให้เนื้อหาแสดงเป็นภาษาอังกฤษแบบอังกฤษมากกว่าภาษาอังกฤษแบบอเมริกัน
ทิมคูเปอร์

5
@TimCooper ทำไมไม่เพียงมีภาษาตามลำดับหรือความต้องการ? คุณค่าดูเหมือนจะไม่สำคัญนอกจากจะใหญ่กว่าสิ่งอื่น
Rob

6
ถึง @kolypto รายการพารามิเตอร์ไม่ว่าจะใน URL หรือในส่วนหัวไม่มีคำสั่งโดยปริยาย
JP Silvashy

37

มันถูกเรียกว่าปัจจัยคุณภาพสัมพัทธ์ในสเปค:

แต่ละช่วงสื่ออาจตามมาด้วยพารามิเตอร์ตอบรับอย่างน้อยหนึ่งรายการเริ่มต้นด้วยพารามิเตอร์ "q" เพื่อระบุปัจจัยคุณภาพที่สัมพันธ์กัน พารามิเตอร์ "q" ตัวแรก (ถ้ามี) แยกพารามิเตอร์ media-range ออกจาก accept-params ปัจจัยด้านคุณภาพช่วยให้ผู้ใช้หรือตัวแทนผู้ใช้สามารถระบุระดับที่สัมพันธ์กันของการตั้งค่าสำหรับช่วงสื่อนั้นโดยใช้มาตราส่วน qvalue จาก 0 ถึง 1 (ส่วน 3.9) ค่าเริ่มต้นคือ q = 1

...

ตัวอย่าง

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

ควรตีความว่า "ฉันชอบเสียง / ขั้นพื้นฐาน แต่ส่งประเภทเสียงใด ๆ มาหาฉันหากเสียงที่ดีที่สุดมีให้หลังจากคุณภาพลดลง 80%"

ดูสิ่งนี้ด้วย:


2
ฉันไปงานปาร์ตี้ช้ามาก - แต่คุณหมายถึงอะไร "หลังจากคุณภาพลดลง 80%"? มันเป็นระดับของความชอบไม่ใช่คุณภาพของไฟล์เสียงใช่มั้ย หรือฉันอ่านผิด
Mave

10
@Mave: ในทางปฏิบัติมันอาจใช้เป็นค่าวัดส่วนใหญ่ อย่างไรก็ตามในสูตรดั้งเดิมฉันเชื่อว่ามันขึ้นอยู่กับคุณภาพของการเข้ารหัส ยกตัวอย่างเช่น FLAC vs MP3 คุณสามารถพูดบางอย่างเช่น: "ส่งเวอร์ชั่น MP3 มาให้ฉันถ้ามันแย่ที่สุดคือ 50% ของคุณภาพของรุ่น lossless ถ้าไม่ส่งเวอร์ชัน FLAC มาให้ฉัน" วิธีการหาปริมาณคุณภาพดังกล่าวและไม่ว่าจะใช้ในทางปฏิบัติฉันไม่รู้ แต่ฉันเชื่อว่าเป็นความตั้งใจดั้งเดิม
เซบาสเตียน Paaske Tørholm

1
@ SebastianPaaskeTørholmฉันมาที่นี่เพื่อหาข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ มีเพียงสองแห่งใน RFC 7231 ที่ดูเหมือนจะบอกใบ้เกี่ยวกับความหมายรองนี้ แต่ก็ไม่ชัดเจนสำหรับฉันว่ามันตั้งใจจะทำงานอย่างไรเนื่องจากความหมายทั้งสองอาจขัดแย้งกัน - ตัวอย่างเช่นดูเหมือนว่ามันจะเป็นไปไม่ได้ เพื่อแสดงการกำหนดค่าตามความชอบสำหรับประเภท lossier เหนือประเภท lossy น้อยกว่าหาก qvalue โอเวอร์โหลดด้วยวิธีนี้
Semicolon

ภาษาที่ต้องการมากที่สุดคือพารามิเตอร์แรกในส่วนหัวเสมอหรือไม่
oldboy

@BugWhisperer มาตรฐานที่เชื่อมโยงมีตัวอย่างที่ซับซ้อนยิ่งขึ้นซึ่งไม่ได้เป็นอันดับแรก โปรดปรึกษาว่า :)
Sebastian Paaske Tørholm

6

พารามิเตอร์คุณภาพการยอมรับภาษาสามารถเข้าใจได้ดังนี้:

โดยแนบAccept-Language: pl_PL;q=0.8, en_US;q=0.2,หัวข้อกับคำขอที่เราสื่อสารกับเซิร์ฟเวอร์ข้อความต่อไปนี้

เซิร์ฟเวอร์โปรดให้การแปลภาษาโปแลนด์ของเว็บไซต์นี้แก่ฉัน แต่โปรดทำเช่นนั้นเฉพาะในกรณีที่คุณภาพ>= %80%ของเว็บไซต์เกี่ยวข้องกับปัจจัยด้านคุณภาพ ในกรณีที่คุณภาพคือ<80%- ฉันไม่รังเกียจที่จะรับเวอร์ชันภาษาอังกฤษเพราะมันไม่เกี่ยวข้องสำหรับฉันตั้งแต่ฉันพูดภาษาอังกฤษต่อไป

ตัวอย่างเช่นในฐานะผู้ให้บริการเนื้อหาเว็บเพจเราอาจแนะนำการAccept-Languageวิเคราะห์ส่วนหัวในลักษณะที่เว็บไซต์ของเราเหมาะสำหรับชาวต่างชาติที่พูดภาษาอังกฤษไม่ได้เลย (แม้การนำทางที่แปลแล้วจะเป็นประโยชน์ (หน้าเว็บที่มีการแปลเฉพาะการนำทาง , มีq=0.1), ที่เนื้อหาที่แปลอย่างเต็มที่q=0.9และเนื้อหาที่แปลแล้วและตรวจสอบโดยเจ้าของภาษาที่พูดทั้งภาษาต้นฉบับและเนื้อหาภาษาที่แปลอาจมีq=0.99- เพราะนี่เป็นสถานการณ์ที่เป็นไปได้เพียงอย่างเดียวเมื่อความหมายของเนื้อหาถูกแปลอย่างสมบูรณ์)


ภาษาที่ต้องการมากที่สุดคือพารามิเตอร์แรกในส่วนหัวเสมอหรือไม่
oldboy

@BugWhisperer ใช่ แต่ถ้าคุณต้องการเข้มงวดกับมาตรฐานจริงๆและถ้าการแปลของคุณง่ายหรืออ่อนแอคุณอาจต้องการข้ามค่าแรก
test30

เหตุใดการใช้ค่าที่สองจึงเข้มงวดมากขึ้น
oldboy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.