Bottle的request.get_cookie(“ cookie-name”)在所有浏览器上均有效,但在Firefox上返回None

时间:2019-09-11 16:45:41

标签: python bottle

我正在研究pymon游戏代码。创建新游戏后,玩家即可加入。当玩家按下“加入”按钮(通过react实现)时,ajax请求将发送到“游戏//玩家”,该请求从cookie中提取玩家名称并将其添加到MySql DB中的游戏表中。在所有浏览器上都可以正常工作,但是在Firefox上由于某种原因,读取播放器cookie的结果为“无”

我已经在Firefox浏览器上检查了cookie,并且其中包含具有正确播放器名称的“播放器” cookie。我还检查了cookie的路径,它是“ /”,这也应该很好。我不明白相同的代码对于除firefox之外的所有其他浏览器都适用的问题,可能会出什么问题。这是我的代码:

@app.post('/games/<game_id>/players') 
def joinGameHandler(game_id): 
    playerName = request.get_cookie("player") 
    print(playerName) 
    result = controller.joinGame(game_id, playerName) 
    return utils.jsonResponse(response, {"result":result})

在所有浏览器中,代码均能正常运行,并且playerName返回播放器名称。但是,在Firefox上,此变量返回None。

1 个答案:

答案 0 :(得分:0)

我通过在Fetch的选项中添加凭据:'include'来解决该问题,

fetch(URL,{方法:“ POST”,凭据:“ include”})

问题出在跨域问题:获取网址与调用获​​取脚本的网址不匹配。为了用户隐私,在这种情况下,Firefox在请求中不包含cookie,因此request.get_cookie为空并返回None。