我有一个发出url请求的python代码(在googeappenigne环境中):
urlfetch.fetch("http://path_to_my_servlet",
headers={'Date': (now_datetime - timedelta(days=1)).strftime("%a, %d %b %Y %H:%M:%S GMT"),
'X-This-Is-A-Header': now_datetime.strftime("%a, %d %b %Y %H:%M:%S GMT"))
我正在我的Mac上测试它,我看到使用wireshark的请求,并且发送了Date标头。
URL指向我的servlet,只是打印标题:
StringBuffer sb =
new StringBuffer("<HTML><HEAD><TITLE>HTTP Headers</TITLE></HEAD><BODY>");
Enumeration<String> headerNames = request.getHeaderNames();
sb.append("<table border='1'><tr><th>Name</th><th>Value</th></tr>");
while (headerNames.hasMoreElements()) {
sb.append("<tr><td>");
String headerName = headerNames.nextElement();
sb.append(headerName).append("</td>");
Enumeration<String> headerValues = request.getHeaders(headerName);
boolean isFirst = true;
while (headerValues.hasMoreElements()) {
if (isFirst)
sb.append("<td>");
else
sb.append("</td></tr><tr><td></td><td>\n");
String headerValue = headerValues.nextElement();
sb.append(headerValue);
isFirst = false;
}
sb.append("</td></tr>");
}
sb.append("</table><br/></BODY></HTML>");
PrintWriter out = response.getWriter();
response.setContentType("text/html");
out.print(sb.toString());
但是,不打印日期标题。 servlet在Elastic beanstalk负载均衡环境中运行。输出如下:
<HTML><HEAD><TITLE>HTTP Headers</TITLE></HEAD><BODY>
<table border='1'>
<tr><th>Name</th><th>Value</th></tr>
<tr><td>host</td><td>myserver.elasticbeanstalk.com</td></tr>
<tr><td>accept-encoding</td><td>gzip</td></tr>
<tr><td>connection</td><td>Keep-Alive</td></tr>
<tr><td>x-forwarded-host</td><td>myserver.elasticbeanstalk.com</td></tr>
<tr><td>x-forwarded-server</td><td>myserverip.us-west-2.compute.internal</td></tr>
我尝试发送'date'标题(没有大写字母D),甚至发送一个额外的日期自定义标题以查看它是否已打印。使用“邮递员”从浏览器向标题添加日期时,将打印日期。
我的日期格式错误并以某种方式过滤了吗?任何想法,任何人?