Q = 0,5 trong các tiêu đề Chấp nhận * HTTP là gì?


190
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

Những 'q =% f' này có nghĩa là gì?

Câu trả lời:


246

Đây được gọi là một yếu tố chất lượng tương đối . Nó chỉ định ngôn ngữ nào người dùng sẽ thích, trên thang điểm từ 0 đến 1, như có thể thấy từ Đặc tả HTTP / 1.1, §14.4 :

Mỗi phạm vi ngôn ngữ CÓ THỂ được cung cấp một giá trị chất lượng liên quan đại diện cho ước tính sở thích của người dùng đối với các ngôn ngữ được chỉ định bởi phạm vi đó. Giá trị chất lượng mặc định là "q = 1". Ví dụ,

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

có nghĩa là: "Tôi thích tiếng Đan Mạch, nhưng sẽ chấp nhận tiếng Anh Anh và các loại tiếng Anh khác."


26
Rất đẹp, cảm ơn! Nhưng tại sao không chỉ liệt kê chúng theo thứ tự ưu tiên?
kolypto

9
Vì vậy, chính xác nó có nghĩa là gì khi chấp nhận 80% en-gb đủ điều kiện?
Pacerier

3
@Pacerier: Điều đó có nghĩa là, trong trường hợp trang web của bạn là đa ngôn ngữ, người dùng sẽ thích nội dung được phục vụ bằng tiếng Anh Anh hơn là tiếng Anh Mỹ.
Tim Cooper

5
@TimCooper Tại sao không có ngôn ngữ theo thứ tự hoặc ưu tiên? Giá trị dường như không quan trọng, ngoài việc nó lớn hơn những cái khác.
Cướp

6
đến @kolypto, danh sách tham số, cho dù trong URL hoặc trong tiêu đề không có thứ tự ngầm.
JP Silvashy

37

Nó được gọi là yếu tố chất lượng tương đối trong đặc tả:

Mỗi phạm vi phương tiện CÓ THỂ được theo sau bởi một hoặc nhiều thông số chấp nhận, bắt đầu bằng tham số "q" để chỉ ra yếu tố chất lượng tương đối. Tham số "q" đầu tiên (nếu có) tách (các) tham số phạm vi phương tiện khỏi các tham số chấp nhận. Các yếu tố chất lượng cho phép người dùng hoặc tác nhân người dùng chỉ ra mức độ ưu tiên tương đối cho phạm vi phương tiện đó, sử dụng thang đo qvalue từ 0 đến 1 (phần 3.9). Giá trị mặc định là q = 1.

...

Ví dụ

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

NÊN được hiểu là "Tôi thích âm thanh / cơ bản, nhưng gửi cho tôi bất kỳ loại âm thanh nào nếu nó là loại tốt nhất có sẵn sau khi giảm 80% chất lượng."

Xem thêm:


2
Tôi thực sự đến bữa tiệc muộn - nhưng ý bạn là gì "sau khi giảm 80% chất lượng"? Đó là mức độ ưu tiên, không phải chất lượng của tệp âm thanh, phải không? Hay tôi đang đọc sai điều này?
Mave

10
@Mave: Chà, trong thực tế, nó có lẽ chủ yếu được sử dụng như một thước đo ưu tiên. Tuy nhiên, trong công thức ban đầu của nó, tôi tin rằng nó có nghĩa là dựa trên chất lượng của mã hóa. Hãy xem xét, ví dụ, FLAC vs MP3. Bạn có thể nói điều gì đó như: "Gửi cho tôi phiên bản MP3 nếu tệ nhất là 50% chất lượng của phiên bản lossless. Nếu không, hãy gửi cho tôi phiên bản FLAC." Làm thế nào để định lượng chất lượng như vậy, và liệu điều đó được sử dụng trong thực tế, tôi không biết, nhưng tôi tin rằng đó là ý định ban đầu.
Sebastian Paaske Tørholm

1
@ SebastianPaaskeTørholm Tôi đến đây để tìm thêm thông tin về điều này. Chỉ có hai vị trí trong RFC 7231 dường như gợi ý về ý nghĩa thứ cấp này, nhưng đối với tôi nó không rõ ràng về cách nó hoạt động, vì hai ý nghĩa có thể xung đột với nhau - ví dụ như có vẻ như điều đó là không thể để thể hiện sự ưa thích đối với loại tổn thất hơn loại ít tổn thất hơn nếu qvalue bị quá tải theo cách này.
Dấu chấm phẩy

ngôn ngữ ưa thích nhất luôn là tham số đầu tiên trong tiêu đề?
oldboy

@BugWhisperer Tiêu chuẩn được liên kết có một ví dụ phức tạp hơn, trong đó không phải là đầu tiên. Hãy tham khảo ý kiến ​​đó. :)
Sebastian Paaske Tørholm

6

Tham số chất lượng ngôn ngữ chấp nhận có thể được hiểu như thế này:

bằng cách đính kèm Accept-Language: pl_PL;q=0.8, en_US;q=0.2,tiêu đề vào yêu cầu chúng tôi liên lạc với máy chủ theo thông báo sau

Máy chủ, vui lòng cung cấp cho tôi bản dịch tiếng Ba Lan của trang web này, nhưng vui lòng chỉ làm điều đó nếu chất lượng của nó >= %80%có liên quan đến yếu tố chất lượng. Trong trường hợp chất lượng là <80%- tôi không ngại nhận phiên bản tiếng Anh, vì nó không liên quan đến tôi vì dù sao tôi cũng nói tiếng Anh.

Vì vậy, ví dụ, với tư cách là nhà cung cấp nội dung trang web, chúng tôi có thể giới thiệu Accept-Languagephân tích cú pháp tiêu đề theo cách như vậy, rằng trang web của chúng tôi phù hợp với người nước ngoài không nói tiếng Anh (thậm chí điều hướng được dịch sẽ hữu ích (các trang chỉ dịch điều hướng, giả sử , have q=0.1), trong đó nội dung được dịch đầy đủ có q=0.9và nội dung được dịch đầy đủ được xác minh bởi người bản ngữ nói cả ngôn ngữ gốc và nội dung ngôn ngữ dịch có thể có q=0.99- bởi vì đây là tình huống duy nhất có thể xảy ra khi ý nghĩa của nội dung được chuyển tải hoàn toàn)


ngôn ngữ ưa thích nhất luôn là tham số đầu tiên trong tiêu đề?
oldboy

@BugWhisperer có, nhưng nếu bạn muốn thực sự nghiêm ngặt với tiêu chuẩn và nếu bản dịch của bạn khá đơn giản hoặc yếu - bạn có thể muốn bỏ qua giá trị đầu tiên
test30

Tại sao sử dụng giá trị thứ hai sẽ nghiêm ngặt hơn?
oldboy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.