1
votes

I've found in my site that I'm getting the http requests twice. I'm using an apache2 server. For example I visit index.php and I get 2 different header requests for index.php (images and CSS files are only requested once), so the page is served twice and any database operation is done twice.

I've found that this is being caused by the meta tag, http-equiv. When I set the content-type attribute to UTF-8 I get this behaviour, removing the tag or setting it to another encoding type (such as ISO-8859-1) eliminates this issue.

This is the html code for that meta-tag:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

Here are the sent and received headers caught by Http Headers Live plugin, that show the duplicate request:

http://oposiziones.dev/



GET / HTTP/1.1

Host: oposiziones.dev

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: es-es,en-us;q=0.7,en;q=0.3

Accept-Encoding: gzip, deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Connection: keep-alive

Referer: http://oposiziones.dev/error-53_q0.html

Cookie: PHPSESSID=jeup12fp5lpoo5t9k052qt7tl7



HTTP/1.1 200 OK

Date: Mon, 21 Nov 2011 11:53:25 GMT

Server: Apache/2.2.20 (Ubuntu)

X-Powered-By: PHP/5.3.6-13ubuntu3.2

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Vary: Accept-Encoding

Content-Encoding: gzip

Content-Length: 6496

Keep-Alive: timeout=5, max=100

Connection: Keep-Alive

Content-Type: text/html




http://oposiziones.dev/



GET / HTTP/1.1

Host: oposiziones.dev

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: es-es,en-us;q=0.7,en;q=0.3

Accept-Encoding: gzip, deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Connection: keep-alive

Referer: http://oposiziones.dev/error-53_q0.html

Cookie: PHPSESSID=jeup12fp5lpoo5t9k052qt7tl7



HTTP/1.1 200 OK

Date: Mon, 21 Nov 2011 11:53:26 GMT

Server: Apache/2.2.20 (Ubuntu)

X-Powered-By: PHP/5.3.6-13ubuntu3.2

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Vary: Accept-Encoding

Content-Encoding: gzip

Content-Length: 6385

Keep-Alive: timeout=5, max=99

Connection: Keep-Alive

Content-Type: text/html

Anybody with an idea on how to solve this? I need to keep the UTF-8 encoding because my database data is set to UTF-8, and everything should be encoded to UTF-8.

I guess this is an apache encoding issue, but have no idea why this happens.

Thanks in advance!

1
don't know if the title is too long, excuses about my englishPacket Tracer
What happens if you set the header using php? So header('Content-Type: text/html; charset=utf-8');. Do you get the same behavior in other browsers? Also, please add your meta code to your post. It might be that you have an error in it.Gerben
added the meta tag to the post.Packet Tracer
There should be a space before />, but that shouldn't cause your problem. What about the other 2 questions I asked?Gerben
I'll try your suggestions and let you now, but now don't have too much time. I've just installed chrome, to test on it. thanksPacket Tracer

1 Answers

0
votes

I didn't find why is happening this but, I solved the issue by adding this directive to the apache configuration file.

Added to config file /etc/apache2/conf.d/charset AddDefaultCharset UTF-8

This option overrides any http-equiv charset meta tag, so the content is always sent in utf-8. This is no problem if all your content should be sent in that encoding, but won't be a solution if you use several types of encoding.

You can move this configuration directive to your .htaccess so it doesn't affect the whole server, just the folder/site you want to.