G-WAN 3.12.26 64位添加重复的http标头

时间:2012-12-29 21:09:23

标签: http-headers g-wan

我使用gwan进行图像生成,所以我需要设置正确的内容类型,但是在一些加载之后G-WAN 3.12.26会添加自己的内容类型为text / html的标头,并返回带有2个http标头的页面。

如何重现:

使用gwan包中的setheaders.c servlet,启动gwan并打开此页面,让我们说http://localhost/?setheaders.c,你会得到这个(正确答案):

HTTP/1.1 200 OK
Date: Sat, 29 Dec 2012 20:37:52 GMT
Last-Modified: Sat, 29 Dec 2012 20:37:52 GMT
Content-type: text/html
Content-Length:    371
Connection: close

<!DOCTYPE HTML><html lang="en"><head><title>Setting response headers</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link href="imgs/style.css" rel="stylesheet" type="text/css"></head><body style="margin:16px;"><h1>Setting response headers</h1><br>This reply was made with custom HTTP headers, look at the servlet source code.<br></body></html>`

现在运行apache bench:ab -n 1000 'http://localhost/?setheaders.c'(1000个请求足以支持我的系统)。

不要重新启动GWAN,再次打开http://localhost/?setheaders.c这就是你应该得到的(错误的响应,2个http标题):

HTTP/1.1 200 OK
Server: G-WAN
Date: Sat, 29 Dec 2012 20:43:34 GMT
Last-Modified: Fri, 16 Jan 1970 16:53:33 GMT
ETag: "be86ada7-14b40d-16f"
Vary: Accept-Encoding
Accept-Ranges: bytes
Content-Type: text/html; charset=UTF-8
Content-Length: 367
Content-Encoding: gzip
Connection: close

HTTP/1.1 200 OK
Date: Sat, 29 Dec 2012 20:43:34 GMT
Last-Modified: Sat, 29 Dec 2012 20:43:34 GMT
Content-type: text/html
Content-Length:    371
Connection: close

<!DOCTYPE HTML><html lang="en"><head><title>Setting response headers</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link href="imgs/style.css" rel="stylesheet" type="text/css"></head><body style="margin:16px;"><h1>Setting response headers</h1><br>This reply was made with custom HTTP headers, look at the servlet source code.<br></body></html>

如果gzip和x-gzip未在请求标头(Accept-Encoding: gzip, x-gzip)中设置为可接受的编码,则GWAN会返回正确的响应。

是否可以解决这个修改只是servlet?如果是,那怎么办?

1 个答案:

答案 0 :(得分:0)

您是否设置了MIME type中显示的fractal.c

   // -------------------------------------------------------------------------
   // specify a MIME type so we don't have to build custom HTTP headers
   // -------------------------------------------------------------------------
   char *mime = (char*)get_env(argv, REPLY_MIME_TYPE);
   // note that we setup the FILE EXTENTION, not the MIME type:
   mime[0] = '.'; mime[1] = 'g'; mime[2] = 'i'; mime[3] = 'f'; mime[4] = 0;

如果您这样做,则无法混淆自动标题功能。

除此之外,由于我们的直接系统调用和GLIBC包装,v3.12存在许多不稳定性问题(文件时间失败,pthread失败,信号失败等) - 最初的目的是使程序在所有版本上运行Linux。

我们已经找到(感谢像您这样的许多报告),而不是试图逐个解决这些问题(毫无意义地与GLIBC打交道,这是一个移动目标,有许多不同版本,每个版本都有自己的错误和特性)更安全的路径是放弃GLIBC。

这就是G-WAN v4将要做的事情,仅仅几天之后。