为什么我发送POST请求时不允许获得405 GET?

时间:2015-02-03 21:02:27

标签: flask cross-domain

我将POST请求从Android发送到我的服务器(python / Flask)

URL url = new URL("www.xxx.com/yyy");
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setRequestMethod("POST");
httpCon.setRequestProperty("Content-Type", "binary/octet-stream");
DataOutputStream out = new DataOutputStream(httpCon.getOutputStream());
out.write(bytes);
out.flush();
out.close();
int status = httpCon.getResponseCode();
...

我用Flask收到了这个

cors = CORS(app)
app.config['CORS_HEADERS'] = 'Content-Type'

@app.route('/yyy', methods=['POST'])
@cross_origin(headers=['Content-Type'])
@def get_checkpoint_config():
    # ...

首先奇怪的事情:有时服务器记录

WARNING:tornado.access:405 GET /yyy

但这是一个POST!

稍微有些奇怪:有些时候我没有得到405,但request.data 为空

我怀疑CORS配置有些可疑。我将@cross_origin替换为@crossdomain(origin='*')(来自此snippet),但我有相同的行为

我该如何解决这个问题?

由于

1 个答案:

答案 0 :(得分:0)

这不是一个完整的答案,但幸运的是我的请求不是太大,所以我把数据作为GET参数,我可以删除与cors相关的所有内容(Fask的交叉原点扩展名)和它工作。问题仍然存在。