谷歌应用引擎.Google应用引擎将POST请求视为GET请求



我现在有一个最奇怪的问题与谷歌应用程序引擎。我从iOS和谷歌应用引擎发送一个POST请求,而不是调用GET处理程序。

我对这种情况进行了沙盒测试,但无法弄清楚。我有一个iOS应用,它只发送一个请求。除了服务之外,我已经评论了GAE的所有内容。该服务只记录一个参数并返回。

在iOS应用中,我试过用两种不同的方式发送请求。无论是作品。

iOS代码:

/*
NSURL * url = [NSURL URLWithString:@"http://beermonster-gngrwzrd.appspot.com/TestParameter"];
ASIFormDataRequest * _fdrequest = [[ASIFormDataRequest alloc] initWithURL:url];
[_fdrequest setPostValue:@"hello" forKey:@"testkey"];
[_fdrequest startAsynchronous];
*/
NSURL * __url = [NSURL URLWithString:@"http://beermonster-gngrwzrd.appspot.com/TestParameter"];
NSMutableURLRequest * __request = [NSMutableURLRequest requestWithURL:__url];
[__request setHTTPMethod:@"POST"];
NSString * post = [NSString stringWithFormat:@"testkey=hello"];
[__request setHTTPBody:[post dataUsingEncoding:NSUTF8StringEncoding]];
[NSURLConnection sendSynchronousRequest:__request returningResponse:nil error:nil];

My App engine handler:

class TestParameter(webapp.RequestHandler):
def post(self):
    logging.debug(self.request.get("testkey"))
    self.response.out.write(self.request.get("testkey"))
    print self.request.get("testkey")
def get(self):
    logging.debug("get")
    logging.debug(self.request.get("testkey"))
    self.response.out.write(self.request.get("testkey"))

GAE日志中的输出显示"get"代码路径不正确。

你知道为什么POST请求会作为GET进入GAE吗?GAE中是否有我遗漏的配置?

谢谢!

检查app.yaml中处理"/TestParameter"的脚本条目。它是否指定"secure: always"?如果是这样,并且您建立了一个非安全连接,您将获得一个302重定向到安全版本。

要解决这个问题,要么通过HTTPS发布,要么从app.yaml中的条目中删除"secure: always"。

我可以告诉你,如果你想发送POST请求给GAE。确保使用https。如果您在非https尝试上发出请求,它将返回一个302重定向到请求的https版本。但是,如果您使用的任何发送请求不能正确处理302,它可能会错误地重新发送请求

最新更新