0

我正在使用托管在 S3 上的静态网页,并且使用 Django 作为我的 api 进行会话管理。

当用户登录我的网站时,我在 S3 POSTing 到 django 上有我的 JS 代码,但我的浏览器上没有保存任何 cookie。

我不确定是 jQuery $.post 不接受 cookie 还是 Django 不允许发送 cookie。我将如何克服这一点?

我目前在我的 django 应用程序上还有一个 url 端点,我可以在其中检查 cookie 是否正常工作,但是当我点击 url 时,我会收到标准消息

Please enable cookies and try again.

虽然我的浏览器接受 cookie。

当我使用 Django 呈现的页面与它们交互时,我可以让这些 url 正常工作。

任何帮助将不胜感激 - 谢谢

编辑 - 显示代码:

我使用 Janrain 允许用户通过 facebook、twitter 等登录。

Janrain 的工作原理

  1. 用户点击登录按钮,使用 facebook/wtv 登录
  2. Janrain 在他们的服务器上获取用户数据并给你一个我通过这个函数发布到 django 的令牌

janrain.events.onProviderLoginToken.addHandler(function(tokenResponse) {

        $.ajax({

            type: "POST",
            url: post_form_url,
            data: formdata + "&token=" + tokenResponse.token,
            success: function(res, textStatus, jqXHR) {
                //do stuff now that we are logged in ...
                console.log(jqXHR.getResponseHeader('Set-Cookie')); //returns null
                //$('#redirect').submit();
            },
        });

在 Django

def login_via_janrain(request):
    if request.method == "POST":
        janrain_token = request.POST.get('token')

        // communicate w/janrain api to get info from this token (i.e. who just logged in via this token)

        #create (or pull) user based on data returned from janrain api and do a Django login

        auth.login(request, user)

        #return success msg to $.post (session cookies should be automatically included in the response)

        return HttpResponse("success")

使用 S3

我目前在 S3 上托管了一个静态站点。我使用 django 呈现的视图测试了这些 url,但最终我希望 S3 站点呈现视图并仅使用 django 作为 api 端点。

我目前可以从 S3 站点登录,但是在成功登录后我没有 cookie 可以显示...我认为 django 没有发回 cookie...

4

0 回答 0