我想知道用户是从英国浏览还是使用英国浏览器。如果没有,我可以放心地认为他们是美国访客。
我可以在数据库中查找他们的IP,但这有点慢,我宁愿从他们的User-agent或其他一些HTTP头中找到。
如果并不总是正确无关紧要,并且存在歧义(例如在英国使用美国电脑的人)。
答案 0 :(得分:2)
您可以检查Accept-Language标头字段。
14.4接受语言
Accept-Language请求标头 字段类似于Accept,但是 限制自然语言集 作为回应的首选 请求。语言标签已定义 在第3.10节中。
Accept-Language = "Accept-Language" ":" 1#( language-range [ ";" "q" "=" qvalue ]
) language-range =((1 * 8ALPHA *(“ - ”1 * 8ALPHA))|“*”)
每个语言范围可以给出一个 相关的质量价值 代表用户的估计 对指定语言的偏好 在那个范围内。质量价值 默认为“q = 1”。例如,
Accept-Language: da, en-gb;q=0.8, en;q=0.7
意思是:“我更喜欢丹麦语,但愿意 接受英国英语和其他类型 英语。“语言范围匹配 一个语言标签,如果它完全相等 标签,或者它是否完全等于a 标签的前缀使得第一个 前缀后面的标记字符是 “ - ”。特殊范围“*”,如果存在的话 在Accept-Language字段中,匹配 每个标签都不匹配任何其他标签 接受语言中存在的范围 字段。
Note: This use of a prefix matching rule does not imply that language tags are assigned to languages in such a way that it is always true that if a user understands a language with a certain tag, then this user will also understand all languages with tags for which this tag is a prefix. The prefix rule simply allows the use of prefix tags if this is the case.
指定的语言质量因素 到了语言标签 Accept-Language字段是质量 最长语言范围的值 在匹配的字段中 语言标签。如果没有语言范围 该字段匹配标记, 分配的语言质量因子为0。 如果没有Accept-Language标头 出现在请求中的服务器
应该假设所有语言都是 同样可以接受如果 接受语言标题存在, 然后是所有分配的语言 品质因数大于0 可以接受的。
这可能与隐私相悖 用户期望发送 Accept-Language标题包含 完整的语言偏好 用户在每个请求中。为一个 有关此问题的讨论,请参阅部分 15.1.4。
因为可懂度高度依赖 在个人用户上,它是 建议客户端应用程序 做出语言选择 用户可用的首选项。如果 那么选择是不可用的 Accept-Language头字段必须 不在请求中给出。
Note: When making the choice of linguistic preference available to the user, we remind implementors of the fact that users are not familiar with the details of language matching as described above, and should provide appropriate guidance. As an example, users might assume that on selecting "en-gb", they will be served any kind of English document if British English is not available. A user agent might suggest in such a case to add "en" to get the best matching behavior.
答案 1 :(得分:1)