haw*_*ett 17 google-app-engine
在过去的3到4周内,我一直在遇到此错误,向app引擎发出请求.某些请求 - 特别是HTTP DELETE请求,从谷歌服务器返回此错误.
其他人报告了同样的错误 - 我可以找到3个结果
我现在在每个浏览器中都会一直得到这种行为.我可以完全清除Chrome,Firefox,Safari中的缓存/ cookie等,重新启动浏览器并仍然可靠地在相同的请求中得到此错误,因此我认为其cookie不相关.在任何情况下,我都可以发出GET,POST和PUT请求同一个cookie没问题.
鉴于它在特定的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
Run Code Online (Sandbox Code Playgroud)
响应标头显示请求从未进入应用引擎服务器(我的应用引擎日志承担了这一点) - 成功进入应用引擎服务器的请求看起来更像响应标头 -
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
Run Code Online (Sandbox Code Playgroud)
我正在使用jquery的$ .ajax()方法构造请求,并将类型设置为"DELETE".此外,这些问题最近一直在上周进行,尽管问题开始出现间歇性问题.现在,我所做的一切都没有任何效果.
目前我认为这是谷歌服务器上的某种配置错误/变化,慢慢地穿过他们的网络 - 这解释了为什么它开始间歇性地,稳定地增加,现在一直在发生.
是否有其他人能够向谷歌应用引擎发出HTTP DELETE请求?如果是的话,您的URL是否包含应用引擎实体密钥?你能看到我的狡猾吗?
任何其他指针将不胜感激.干杯,
科林
谷歌服务器的完整回复是 -
<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>
Run Code Online (Sandbox Code Playgroud)
Dre*_*ars 17
使用HTTP DELETE,URI应该完全标识要删除的资源.在请求正文中发送其他数据是意外的,并且在App Engine上不受支持:
实际上,当appspot前端看到包含正文的DELETE请求(例如您的应用程序)时,它们会返回501.但是,如果您删除正文,那么它将提供200.
根据随后的讨论,看起来他们认为400比501更合适.无论如何,如果省略正文并将实体密钥移动到URI中,那么你应该没问题.
归档时间: |
|
查看次数: |
26522 次 |
最近记录: |