从ajax调用维护python flask会话

时间:2017-11-16 10:52:49

标签: jquery python ajax session flask

我在程序中使用了烧瓶会话来维护所有动态信息。我已经在本地主机上托管了我的服务。

from flask import Flask,make_response,render_template, request, jsonify,json,jsonify,send_from_directory,session
from flask.ext.cors import CORS, cross_origin
import requests


app = Flask(__name__)
app.secret_key='test'  
cors = CORS(app)
app.config['CORS_HEADERS'] = 'Content-Type'


@app.route('/getAnswer')    
@cross_origin() 
def getAnswer():
    userQuery = request.args.get("query") 


    session['username']="testuser"
    session['userid']="Utkj3YC"
    reply=askquestion(userQuery,session)
    print "giving response : ",str(reply)
    answer=str(reply)

    return jsonify(response=answer,id="1",status="suc",dialog="initial")

if __name__ == '__main__':
    app.run(host='0.0.0.0',processes=True,debug=True,port=8000)

这是我的烧瓶服务,当我从邮递员restclient测试时,这工作正常。邮递员请求维护相同的会话变量。

enter image description here

问题在于我将此服务与我的UI集成在一起。每次重置烧瓶会话变量的ajax请求,因为我无法维护会话。 我的ajax调用如下

$.ajax({
        url: "http://127.0.0.1:8000/getAnswer",
        method: 'GET',

        data: { query: query,dialog:dialog },
        success: function(data) { 


         var $chatBox = $('#botReplyDiv').clone().prop('id',"botdiv"+data.id);
         var $loading = $('.loader');
         $chatBox.css("display", "block");
         var ul  = document.createElement('ul');
         console.log(data.response);
         var resp=data.response;
         var li=document.createElement('li');
         li.appendChild(document.createTextNode(data.response));

         ul.appendChild(li);

         }
         });

我也尝试在ajax请求中添加它。

xhrFields: {
  withCredentials: true
  }

但问题仍然存在。每次在flask中创建一个新会话。但是当我使用POSTMAN时,相同的代码,它是持久的同一个会话。为了使ajax调用在每个请求中保持相同的会话,我必须做什么改变?

1 个答案:

答案 0 :(得分:0)

问题是我在客户端代码中使用http://locahost:8000/getAnswer。我改变了它http://127.0.0.1:8000/getAnswer,现在工作正常。