Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome扩展和Django:验证是否允许第三方cookie_Javascript_Django_Cookies_Google Chrome Extension_Xmlhttprequest - Fatal编程技术网

Javascript Chrome扩展和Django:验证是否允许第三方cookie

Javascript Chrome扩展和Django:验证是否允许第三方cookie,javascript,django,cookies,google-chrome-extension,xmlhttprequest,Javascript,Django,Cookies,Google Chrome Extension,Xmlhttprequest,我正在使用Django的cookies身份验证 我有一个Chrome分机。当用户单击扩展按钮时,扩展将向my_site.com/cookie_test发送xmlHttp请求/ 附加到此url的视图可让用户知道他是否已登录my_site.com。(它还做其他事情。) Content_script.js 查看my_site.com/cookie_test/ 案例1:用户登录到my_站点,浏览器允许第三方cookie 结果:“已登录”正确 案例2:用户未登录 结果:“未登录”正确 案例3:用户已登录,

我正在使用Django的cookies身份验证

我有一个Chrome分机。当用户单击扩展按钮时,扩展将向my_site.com/cookie_test发送xmlHttp请求/

附加到此url的视图可让用户知道他是否已登录my_site.com。(它还做其他事情。)

Content_script.js

查看my_site.com/cookie_test/

案例1:用户登录到my_站点,浏览器允许第三方cookie

结果:“已登录”正确

案例2:用户未登录

结果:“未登录”正确

案例3:用户已登录,但浏览器不允许第三方cookie

结果:“未登录”不正确

我的问题

如果用户的浏览器不允许第三方cookie,我如何显示消息“更改cookie设置!”换句话说,我如何区分不登录和不允许第三方cookie?这可以是服务器端也可以是客户端。

我最后做了什么:

小结:Do request.session.set_test_cookie(),如果没有cookie,则在第一次调用中设置。在这种情况下,回答“潜在的cookie问题”。在content_脚本中,如果得到此响应,则使用request.session.test_cookie_worked()进行第二次调用并测试cookie是否存在

查看第一次调用调用的函数

查看第二次调用调用的函数

content_script.js


也许可以尝试在每个页面上为测试集使用另一个cookie,并在您的请求中检查它。
function got_response(){ 
    if (xmlHttp.readyState == 4){
        alert(xmlHttp.responseText);  
    }
 }

var xmlHttp=new XMLHttpRequest();
xmlHttp.open("POST", "my_site.com/cookie_test/",true);
xmlHttp.onreadystatechange = got_response;
xmlHttp.send();
@csrf_exempt
def cookie_test(request):
    if not request.user.is_authenticated():
        return HttpResponse("not logged in")
    else:
        return HttpResponse("logged in")
if not request.user.is_authenticated():
    if len(request.COOKIES) == 0: 
        # User does not allow third party cookies or cookies are deleted/expired
        request.session.set_test_cookie() # Django function
        return HttpResponse("potential cookie issue")
    else:
        return HttpResponse("not logged in") 
else:
    return HttpResponse("logged in") 
    # would actually continue and do stuff here instead
if not request.session.test_cookie_worked(): # Django function
    return HttpResponse("third party cookies not allowed")      
else:
    return HttpResponse("not logged in") 
function got_response(){ 
    if (xmlHttp.readyState == 4){
        if (response_data == "potential cookie issue"){ 
                function got_response2(){ 
                   if (xmlHttp2.readyState == 4){
                        display_response(xmlHttp2.responseText); 
                       /*either not logged in or cookie issue depending on response*/
                    }
                }  
                var xmlHttp2=new XMLHttpRequest();
                xmlHttp2.open("GET", domain+"/second_call/",true);
                xmlHttp2.onreadystatechange = got_response2;
                xmlHttp2.send();
       }
       else{/* not logged in or logged in depending on response*/}
    }
 }

var xmlHttp=new XMLHttpRequest();
xmlHttp.open("POST", "my_site.com/first_call/",true);
xmlHttp.onreadystatechange = got_response;
xmlHttp.send();