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

Issue 112804 link

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

Accept-Charset is obsolete; stop sending it

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

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

Simple test case: http://mathiasbynens.be/demo/accept-charset
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.
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.
yeah, please just kill the header. we web devs will make sure our websites keep on working.
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.
> abarth: Thoughts? Safe to ditch?

I don't know.  If Firefox removed it, it's probably safe to remove in Chrome as well.
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.
+1

Comment 10 Deleted

Comment 11 Deleted

Comment 12 Deleted

Comment 13 Deleted

Comment 14 Deleted

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/
Cc: js...@chromium.org
Labels: Feature-I18N
I agree with the reasoning to remove. CC'ing some people who may be interested.
Project Member

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

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

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

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
------------------------------------------------------------------------
Status: Fixed
In which Chrome version it will land?
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.
Project Member

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

Labels: -Cr-UI-I18N Cr-UI-Internationalization
Labels: M-27
Components: Internals>Network
Components: -Internals>Network>HTTP

Sign in to add a comment