Django、HttpページからのAjaxによるセキュアログイン

ajax django https ssl
Django、HttpページからのAjaxによるセキュアログイン

私はajax経由でHttpページからユーザーにログインします。 安全な(https)ページにリクエストを送信しています。 私の問題は、ビュー関数がhttpsページにHttpResponseオブジェクトを返しているため(ユーザーがまだhttpにいるため)応答を受信して​​いないことです。

これがコードです

  @secure_required
  def login_async(request):
      if request.method=='POST':
         email=request.POST.get('email', '')
          try:
            user=User.objects.get(email__exact=email)
            username=user.username

          except User.DoesNotExist:
             username=''

      password=request.POST.get('password', '')


      user=auth.authenticate(username=username, password=password)
      if user is not None:
        auth.login(request,user)
        user_status=1
        user_fname=user.first_name


       user_data=[{'user_status':user_status, 'user_fname':user_fname,'user_favorite':user_favorite,'flag_record':flag_record, 'message_sent':message_sent,'is_post_owner':is_post_owner}]
       json_data=json.dumps(user_data)
       response=HttpResponse()
       response['Content-Type']="text/javascript"
       response.write(json_data)
       return response
     else:
        user_data=[{'user_status':user_status}]
        json_data=json.dumps(user_data)
        response=HttpResponse()
        response['Content-Type']="text/javascript"
        response.write(json_data)
        return response

  else:
    user_data=[{'user_status':"0"}]

           json_data=json.dumps(user_data)
        response=HttpResponse()
        response['Content-Type']="text/javascript"
        response.write(json_data)
        return response

ページ全体をhttpsにするだけではどうですか? 良い質問。 Tweet Buttonのhttps互換性に関する問題がありました。

ありがとう

  1  2


ベストアンサー

あなたのブラウザがネット上で何を送信しているかを確認すると、あなたが望むようにPOSTではなくOPTIONSリクエストであることがわかります。 これは、httpページからのhttps XHTTPRequest(AJAX)がクロスドメインと同じ方法で処理されるために発生します。https://stackoverflow.com/questions/1743845/jquery-i-get-options-request-instead-of-get [jQuery :GET]の代わりにOPTIONSリクエストを受け取ります。

そしてもう一つ、全体:

json_data=json.dumps(user_data)
response=HttpResponse()
response['Content-Type']="text/javascript"
response.write(json_data)
return response

だけで置き換えることができます:

return HttpResponse(json.dumps(user_data), mimetype='text/javascript')

3


タイトルとURLをコピーしました