こんにちは、私は単純なフラスコの残りのAPIで作業しています。私は別のサーバーでフロントエンドとバックエンドを実行しています。次のコードは、私がpostmanからサーバーコードにアクセスする場合に機能します。POSTメソッドのリクエストがある場合、セッション変数を取得できません。
from flask import Flask, jsonify, session, request
import os
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
@app.route('/api/login', methods=['POST'])
def first():
session['this_one'] = 'first'
return jsonify({'message': 'hello', 'success':1})
@app.route('/api/messages', methods=['POST'])
def second():
print session['this_one']
# args = request.json
return jsonify({'message':'fdsafd'})
if __name__ == '__main__':
app.run(debug=True)
ここでは、「第2の」方法で方法を印刷することができません。私は取得していますエラーです「KeyError例外」
KeyError: 'this_one'
しかし、私はそれが正常に動作しているPOSTメソッドを削除する場合。そして、私はセッション変数なしで二重チェックし、コードは正常に機能しました。誰でも私にこれを手伝うことができますか?我々はまた、応答のヘッダーを使用しています。しかし、私はここにそのコードを貼り付けていません。
ありがとうございます。
私は使用したhtmlコードを投稿しています。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#login").click(function() {
console.log("1")
$.ajax({
type: "POST",
url: "http://127.0.0.1:5000/api/login",
data: JSON.stringify ({user: 'bbb'}),
contentType: "application/json",
dataType:"json",
crossDomain:true,
success: function (data, status, jqXHR) {
console.log("success "+data['message']);
},
error: function (jqXHR, status) {
// error handler
console.log(jqXHR);
console.log('fail' + status.code);
}
});
});
$("#go").click(function() {
console.log("2")
$.ajax({
type: "POST",
url: "http://127.0.0.1:5000/api/messages",
data: JSON.stringify ({user: 'aaa'}),
contentType: "application/json",
dataType:"json",
crossDomain:true,
success: function (data, status, jqXHR) {
console.log("success "+data['message']);
},
error: function (jqXHR, status) {
// error handler
console.log(jqXHR);
console.log('fail' + status.code);
}
});
});
});
</script>
</head>
<body>
<button id="login">aaa</button>
<button id="go">bbb</button>
</body>
</html>
ここにはログがあります。 jqueryがOPTIONSリクエストを送信しています。
127.0.0.1 - - [27/May/2017 16:09:45] "OPTIONS /api/login HTTP/1.1" 200 -
first
127.0.0.1 - - [27/May/2017 16:09:45] "POST /api/login HTTP/1.1" 200 -
127.0.0.1 - - [27/May/2017 16:09:52] "OPTIONS /api/messages HTTP/1.1" 200 -
127.0.0.1 - - [27/May/2017 16:09:52] "POST /api/messages HTTP/1.1" 500 - KeyError
私は郵便配達員と一緒に試してみると、私はOPTIONSリクエストを見ていません。私はPythonコードでOPTIONS要求を処理する必要がありますと信じています。しかし、ドキュメンテーションによると、フラスコはそれを処理します。
私は今何をすべきか分かりません。誰かが私を助けることができますか?それが動作するはず
POST/api/login HTTP/1.1 "200-' ' first''127.0.0.1 - [27/May/2017 13:38:53] .0.1 - - [27/May/2017 13:39:01] "POST/api/messages HTTP/1.1" 200-' –