New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 15 users

Issue metadata

Status: Fixed
Owner: ----
Closed: Mar 2013
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Bug



Sign in to add a comment
link

Issue 112804: Accept-Charset is obsolete; stop sending it

Reported by a...@chromium.org, Feb 6 2012 Project Member

Issue description

http://hsivonen.iki.fi/accept-charset/ makes the argument that since Unicode Is The Future (an argument we make in http://googleblog.blogspot.com/2010/01/unicode-nearing-50-of-web.html ), Accept-Charset is just a waste of bytes and shouldn't be sent any more.
 

Comment 1 by peter@chromium.org, Feb 6 2012

 Issue 112805  has been merged into this issue.

Comment 2 by math...@qiwi.be, Feb 6 2012

Comment 3 by laukst...@gmail.com, Feb 8 2012

Mozilla had removed "Accept-Charset" header considering to https://bugzilla.mozilla.org/show_bug.cgi?id=572652 that was discussed since Firefox 5.

Referring to https://developer.mozilla.org/en/HTTP/Content_negotiation#The_Accept-Charset:_header :

The HTTP/1.1 standard standard headers that may be used in a server-driven negotiation algorithm are: Accept:, Accept-Charset:, Accept-Encoding:, Accept-Language: and User-Agent:.

The Accept-Charset: header defined in the HTTP/1.1 standard, section 14.2, this header is used to indicates to the server what character encoding are understood by the user-agent. Traditionally, it was set to a different value for each locale for the browser, e. g. ISO-8859-1,utf-8;q=0.7,*;q=0.7 for a Western European locale.

Considering that:
UTF-8 is now well-supported by all relevant user-agents,
the presence of the header increases the  configuration-based entropy exposed,
the presence of the header increases the data transmitted for each request
almost no sites are using the value of this header for choosing content during the negotiation,

browsers started to stop sending this header in each request, starting with Internet Explorer 8, Safari 5, Opera 11 and Firefox 10. In the absence of Accept-Charset:, servers can simply assume that UTF-8 and the most common characters sets are understood by the client.

Comment 4 by hsivo...@hsivonen.fi, Feb 28 2013

FWIW, back when Firefox was sending Accept-Charset, it put the label of the fallback encoding in Accept-Charset. This had the unintended consequence of localizations setting the fallback charset not to what made the most sense for decoding legacy content but what made more sense to advertise as an encoding they wanted to see.

Chrome seems to have the same behavior, so you might want to consider expediting the removal of Accept-Charset before it does damage to your localizations, too.

Comment 5 by nicksha...@gmail.com, Feb 28 2013

yeah, please just kill the header. we web devs will make sure our websites keep on working.

Comment 6 by willchan@chromium.org, Mar 1 2013

Cc: pauljensen@chromium.org mmenke@chromium.org abarth@chromium.org willchan@chromium.org
Labels: -Area-WebKit Area-Internals Internals-Network-HTTP
Looks like this bug never got triaged =/

abarth: Thoughts? Safe to ditch?

Note that this is actually applied in our HTTP layer: https://code.google.com/p/chromium/codesearch#chromium/src/net/url_request/url_request_http_job.cc&q=kAcceptCharset&sq=package:chromium&type=cs&l=496. Probably why no one triaged this since the WebKittens don't know where it comes from.

Paul/Matt: If we have consensus on removing this header, it looks like we can ditch it from HttpUserAgentSettings too.

Comment 7 by abarth@chromium.org, Mar 3 2013

> abarth: Thoughts? Safe to ditch?

I don't know.  If Firefox removed it, it's probably safe to remove in Chrome as well.

Comment 8 by mmenke@chromium.org, Mar 4 2013

If we're the only ones sending it now, then let's get rid of it and keep an eye out for any significant site breakages.

Comment 9 by willchan@chromium.org, Mar 4 2013

+1

Comment 10 Deleted

Comment 11 Deleted

Comment 12 Deleted

Comment 13 Deleted

Comment 14 Deleted

Comment 15 by pauljensen@chromium.org, Mar 8 2013

I verified FF 13.0.1, Safari 6.0.2 and IE 8 do not send Accept-Charset.
I think it was removed from FF in June of 2010: https://bugzilla.mozilla.org/show_bug.cgi?id=572652
I've got a CL to remove it from Chrome:
https://codereview.chromium.org/12463021/

Comment 16 by falken@chromium.org, Mar 8 2013

Cc: js...@chromium.org
Labels: Feature-I18N
I agree with the reasoning to remove. CC'ing some people who may be interested.

Comment 17 by bugdroid1@chromium.org, Mar 10 2013

Project Member
Labels: -Area-Internals -Internals-Network-HTTP -Feature-I18N Cr-Internals-Network-HTTP Cr-Internals Cr-UI-I18N

Comment 18 by bugdroid1@chromium.org, Mar 15 2013

Project Member
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=188237

------------------------------------------------------------------------
r188237 | pauljensen@chromium.org | 2013-03-15T01:00:12.060781Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/url_request/url_request_ftp_job_unittest.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/sync/internal_api/http_bridge.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/url_request/http_user_agent_settings.h?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/webkit/tools/test_shell/test_shell_request_context.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/url_request/url_request_context.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/http/http_util_unittest.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/policy/cloud/device_management_service.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/url_request/url_request_context.h?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/http/http_util.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/url_request/static_http_user_agent_settings.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/http/http_util.h?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/url_request/url_request_context_builder.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/automation/url_request_automation_job.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/url_request/static_http_user_agent_settings.h?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/url_request/url_request_context_builder.h?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/sync/internal_api/public/http_bridge.h?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/io_thread.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/net/chrome_http_user_agent_settings.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/android_webview/browser/net/aw_url_request_context_getter.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/net/chrome_http_user_agent_settings.h?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/shell/shell_url_request_context_getter.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/service/net/service_url_request_context.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/net/basic_http_user_agent_settings.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/url_request/url_request_http_job.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/net/basic_http_user_agent_settings.h?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/url_request/url_request_test_util.cc?r1=188237&r2=188236&pathrev=188237
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/url_request/url_request_unittest.cc?r1=188237&r2=188236&pathrev=188237

Stop sending Accept-Charset HTTP header as its not relevant anymore.  Remove it from HttpUserAgentSettings as well as this is no longer needed.

BUG= 112804 

Review URL: https://chromiumcodereview.appspot.com/12463021
------------------------------------------------------------------------

Comment 19 by pauljensen@chromium.org, Mar 17 2013

Status: Fixed

Comment 20 by laukst...@gmail.com, Mar 17 2013

In which Chrome version it will land?

Comment 21 by willchan@chromium.org, Mar 17 2013

From comment #18, the revision is 188237. Looks like it's in at least branch 1443, which is milestone 27 (Google Chrome 27). You can verify the latest branch cutoffs and milestones at http://omahaproxy.appspot.com/.

Thanks for the fix Paul.

Comment 22 by bugdroid1@chromium.org, Mar 20 2013

Project Member
Labels: -Cr-UI-I18N Cr-UI-Internationalization

Comment 23 by cbentzel@chromium.org, Jun 12 2013

Labels: M-27

Comment 24 by efoo@chromium.org, Jul 6 2018

Components: Internals>Network

Comment 25 by efoo@chromium.org, Jul 6 2018

Components: -Internals>Network>HTTP

Sign in to add a comment