【发布时间】:2010-07-30 16:51:24
【问题描述】:
在过去 3 或 4 周向应用引擎发出请求时,我一直遇到此错误。某些请求(尤其是 HTTP DELETE 请求)会从 google 服务器返回此错误。
其他人报告了同样的错误 - 我可以找到 3 个结果
- 这是由过时的 cookie 引起的 - 清除您的 cookie 并且它运行良好 gmail help -
- 它是由格式错误的 url 引起的 - 我能找到的唯一案例与 urlfetch() 有关 - url 中的空格 - App engine Group #1, App Engine Group #2
- 无解决方案 - 偶发行为,仅限 IE。 App Engine Group #3, App Engine Group #4
我现在在每个浏览器中一直都出现这种行为。我可以完全清除 Chrome、Firefox、Safari 中的缓存/cookie 等,重新启动浏览器并且仍然可靠地在相同的请求上得到这个错误,所以我认为它与 cookie 无关。在任何情况下,我都可以使用同一个 cookie 发出 GET、POST 和 PUT 请求。
鉴于它在特定的 DELETE 请求上可靠地发生,格式错误的 URL 似乎最有可能,但是我的 URL 非常简单,并且在开发服务器上工作正常
Firebug 将请求标头显示为(我已经修改了键,因为它们包含识别数据,但这样做是通过从键的中心删除字符来实现的 - 不是为了保证我没有无意中删除任何前导或尾随空格)
Request URL:http://my-app.appspot.com/agprhcjgLEgVLbm93dCItX0RrbV9Ea25vd3RfbmV0X19wccxDA/Task.xml
Request Method:DELETE
Status Code:400 Bad Request
Request Headers
Accept:*/*
Cache-Control:max-age=0
Content-Type:application/x-www-form-urlencoded
Origin:http://my-app.appspot.com
Referer:http://my-app.appspot.com/
User-Agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4
X-Requested-With:XMLHttpRequest
Form Data
entity_key:agprdC1hcjYLEgVLbm93dCIrX09Ea25vd3RfbmV0X19wMQw
Response Headers
Content-Length:1350
Content-Type:text/html; charset=UTF-8
Date:Fri, 30 Jul 2010 15:51:58 GMT
Server:GFE/2.0
响应标头显示该请求从未到达应用引擎服务器(我的应用引擎日志证实了这一点) - 成功到达应用引擎服务器的请求对于响应标头看起来更像这样 -
Cache-Control:no-cache
Content-Length:4332
Content-Type:application/xml
Date:Fri, 30 Jul 2010 11:08:21 GMT
Expires:Fri, 01 Jan 1990 00:00:00 GMT
Server:Google Frontend
X-AppEngine-Estimated-CPM-US-Dollars:$0.004033
X-AppEngine-Resource-Usage:ms=573 cpu_ms=146 api_cpu_ms=30
我正在使用 jquery 的 $.ajax() 方法构造请求并将类型设置为“DELETE”。此外,这些方法直到上周才有效,尽管问题开始间歇性地出现。目前,我所做的任何事情都没有任何效果。
目前我认为这是谷歌服务器上的某种配置错误/更改,慢慢蔓延到他们的网络 - 这解释了为什么它开始时断时续,稳步增加,现在一直在发生。
还有其他人能够向谷歌应用引擎发出 HTTP DELETE 请求吗?如果是,您的 URL 是否包含应用引擎实体键?你能看出我有什么不靠谱的地方吗?
任何其他指针将不胜感激。干杯,
科林
来自 google 服务器的完整响应是 -
<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>400 Bad Request</title>
<style><!--
body {font-family: arial,sans-serif}
div.nav {margin-top: 1ex}
div.nav A {font-size: 10pt; font-family: arial,sans-serif}
span.nav {font-size: 10pt; font-family: arial,sans-serif; font-weight: bold}
div.nav A,span.big {font-size: 12pt; color: #0000cc}
div.nav A {font-size: 10pt; color: black}
A.l:link {color: #6f6f6f}
A.u:link {color: green}
//--></style>
<script><!--
var rc=400;
//-->
</script>
</head>
<body text=#000000 bgcolor=#ffffff>
<table border=0 cellpadding=2 cellspacing=0 width=100%><tr><td rowspan=3 width=1% nowrap>
<b><font face=times color=#0039b6 size=10>G</font><font face=times color=#c41200 size=10>o</font><font face=times color=#f3c518 size=10>o</font><font face=times color=#0039b6 size=10>g</font><font face=times color=#30a72f size=10>l</font><font face=times color=#c41200 size=10>e</font> </b>
<td> </td></tr>
<tr><td bgcolor="#3366cc"><font face=arial,sans-serif color="#ffffff"><b>Error</b></td></tr>
<tr><td> </td></tr></table>
<blockquote>
<H1>Bad Request</H1>
Your client has issued a malformed or illegal request.
<p>
</blockquote>
<table width=100% cellpadding=0 cellspacing=0><tr><td bgcolor="#3366cc"><img alt="" width=1 height=4></td></tr></table>
</body></html>
【问题讨论】:
-
您的第一个建议(清除所有数据、cookie 等)奏效了,谢谢