首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >接受和接受-字符集-哪个更好?

接受和接受-字符集-哪个更好?
EN

Stack Overflow用户
提问于 2011-08-14 08:40:47
回答 6查看 45.7K关注 0票数 53

在HTTP中,您可以在请求中指定客户端可以使用accept头(例如application/xml )接受响应中的特定内容。内容类型规范允许在内容类型(如charset=utf-8 )中包含参数,指示您可以接受具有指定字符集的内容。

还有accept-charset头,它指定客户端接受的字符编码。

如果指定了两个标头,并且accept标头包含具有charset参数的内容类型,那么服务器应该将哪个标头视为上级标头?

例如:

代码语言:javascript
运行
复制
Accept: application/xml; q=1,
        text/plain; charset=ISO-8859-1; q=0.8
Accept-Charset: UTF-8

我使用Fiddler向各种服务器发送了几个示例请求,以测试它们如何响应:

示例

W3

请求

代码语言:javascript
运行
复制
GET http://www.w3.org/ HTTP/1.1
Host: www.w3.org
Accept: text/html;charset=UTF-8
Accept-Charset: ISO-8859-1

响应

代码语言:javascript
运行
复制
Content-Type: text/html; charset=utf-8

Google

请求

代码语言:javascript
运行
复制
GET http://www.google.co.uk/ HTTP/1.1
Host: www.google.co.uk
Accept: text/html;charset=UTF-8
Accept-Charset: ISO-8859-1

响应

代码语言:javascript
运行
复制
Content-Type: text/html; charset=ISO-8859-1

StackOverflow

请求

代码语言:javascript
运行
复制
GET http://stackoverflow.com/ HTTP/1.1
Host: stackoverflow.com
Accept: text/html;charset=UTF-8
Accept-Charset: ISO-8859-1

响应

代码语言:javascript
运行
复制
Content-Type: text/html; charset=utf-8

Microsoft

请求

代码语言:javascript
运行
复制
GET http://www.microsoft.com/ HTTP/1.1
Host: www.microsoft.com
Accept: text/html;charset=UTF-8
Accept-Charset: ISO-8859-1

响应

代码语言:javascript
运行
复制
Content-Type: text/html

对于预期的行为,似乎没有任何共识。我想看起来很惊讶。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-09-09 21:17:20

尽管您可以在Accept标头中设置媒体类型,但该媒体类型的charset参数定义在RFC 2616中的任何地方都没有定义(但并不是禁止的)。

因此,如果要实现HTTP1.1兼容的服务器,首先要查找Accept-charset标头,然后在Accept标头上搜索自己的参数。

票数 37
EN

Stack Overflow用户

发布于 2011-09-05 16:44:37

阅读RFC 2616 14.1和14.2节。Accept标头不允许您指定charset。您必须使用Accept-Charset头来代替。

票数 12
EN

Stack Overflow用户

发布于 2016-05-23 17:24:07

首先,Accept头可以接受参数,请参阅RFC 7231第5.3.2节

所有mime类型都可以接受字符集参数。

Accept-Charset头允许用户代理指定它支持的字符集。

如果Accept-Charset头不存在,用户代理必须为它接受的每个text/*媒体类型指定每个text/*参数。

代码语言:javascript
运行
复制
Accept: text/html;charset=US-ASCII, text/html;charset=UTF-8, text/plain;charset=US-ASCII, text/plain;charset=UTF-8
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7055849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档