gpt4 book ai didi

python - 从自定义域访问 Flask session cookie

转载 作者:行者123 更新时间:2023-12-03 17:04:31 25 4
gpt4 key购买 nike

我的 Flask 应用程序的用户登录 https://example.com/login ,但他们可以设置自定义域,如 http://customdomain.com

我希望能够在用户访问他们的自定义域时访问 Flask session 变量,以便在用户登录时我可以显示删除和修改用户界面控件。

当然,浏览器会阻止从创建它们的域以外的域访问 cookie。

关于如何解决这个问题的任何想法或方法?

最佳答案

这就是我所做的;似乎运作良好。我使用 withCredentials 对服务器进行 AJAX JSONP 调用设置为 true .服务器获取 session cookie 并告诉客户端用户是否登录。根据响应,我可以向用户显示其他用户界面元素。

<script>

$(".logged_in").hide();

request = $.ajax({
url: "http://example.com/ping/",
type: "GET",
dataType: "jsonp",
xhrFields: {
withCredentials: true
}

});

request.done(function (response, textStatus, jqXHR){
// log a message to the console

if (response['logged_in'])
{
$(".logged_in").show();
}
});

request.fail(function (jqXHR, textStatus, errorThrown){
// log the error to the console
console.error("The following error occurred: " + textStatus, errorThrown);
console.log("jqXHR: " + JSON.stringify(jqXHR))
});

</script>

服务器代码:
def jsonp(func):
"""Wraps JSONified output for JSONP requests."""
@wraps(func)
def decorated_function(*args, **kwargs):
callback = request.args.get('callback', False)
if callback:
data = str(func(*args, **kwargs).data)
content = str(callback) + '(' + data + ')'
mimetype = 'application/javascript'
return current_app.response_class(content, mimetype=mimetype)
else:
return func(*args, **kwargs)
return decorated_function


@app.route('/ping/')
@jsonp
def ping():

if 'user_id' in session:
print "session ping: %s" % session
return jsonify(logged_in='true')

else:
print "session ping: not logged in"
return jsonify(logged_in="false")

关于python - 从自定义域访问 Flask session cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19692276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com