运行多年的GAE旧应用突发404错误 无法读写地图标记且简化代码报405
故障修复方案
根因说明
- 404报错:
app.yaml仅配置了根路径/的转发规则,所有对/details.txt的请求未匹配到任何handler,直接被Google App Engine返回404,没有进入mainapp.py的路由逻辑。 - 405报错:生产环境使用POST请求提交数据,但
Details请求处理类仅实现了get()方法,没有对应处理POST请求的post()方法,webapp2框架默认返回405方法不允许错误。
修复步骤
1. 更新app.yaml路由规则
修改handlers配置,让所有路径请求都转发到mainapp.app处理:
runtime: python27 threadsafe: true handlers: - url: /.* script: mainapp.app basic_scaling: max_instances: 1 #idle_timeout: 5m
2. 新增POST请求处理逻辑
在mainapp.py的Details类中新增post()方法,可直接复用GET逻辑:
class Details(webapp2.RequestHandler): def get(self): logging.info("Details: ") action = self.request.get("Action", "Detail") logging.info("action: %s " % (action)) self.response.out.write("pin in") def post(self): self.get()
3. 修复示例代码前端逻辑错误(可选)
提供的index.html示例中存在变量未定义问题,可按需修正:
function process(form) { // 原代码form.data.value不存在,输入框name为name var name = escape(form.name.value); var url = "details.txt?Action=add&name=" + name; // 其余原有逻辑保持不变
验证
修改完成后在本地SDK测试,/details.txt路径的GET、POST请求均可正常响应,无404、405错误。
内容的提问来源于stack exchange,提问作者zerowords
相关产品推荐
相关产品推荐

