0

Chrome 확장 프로그램을 사용하여 쿠키를 설정하려면 어떻게해야하나요? Chrome 확장 프로그램을 통해 내 웹 페이지에 로그인하는 중입니다. sessionid을 설정해야하지만 작동하지 않습니다.Chrome 확장 프로그램을 사용하여 쿠키를 설정할 수 없습니다.

success의 경고는 표시되지만 로그인하거나 페이지를 리디렉션하지 않습니다.

$(document).ready(function() { 
    $('#login-button-id').click(function() { 

     var login = $('#input-email-id').val(); 
     var password = $('#input-password-id').val(); 
     $.ajax({ 
      url: 'http://127.0.0.1:8000/api/authenticate', 
      type: 'POST', 
      data: { 
       'login': login, 
       'password': password 
      }, 
      success: function (data) { 
       $.cookie('sessionid',data.sessionid); 
       chrome.cookies.set({"sessionid":data.sessionid}); 
       alert("You are logged in"); 
       window.location.href = "http://127.0.0.1:8000/admin"; 
      }, 
      error: function (jqXHR, textStatus, errorThrown) { 
       console.log("JQuery failed: " + textStatus + " with error thrown: " + errorThrown); 
       console.log(jqXHR); 
      } 
     }) 
    }); 
    $('#logout-button-id').click(function() { 

    }) 
}); 

MANIFEST

{ 
    "manifest_version": 2, 
    "name": "xyz", 
    "description": "This is a plugin collaborating with xyz.com", 
    "version": "1.0", 
    "browser_action": { 
    "default_icon": "spy-icon.png", 
    "default_popup": "popup.html", 
    "default_title": "Click here!" 
    }, 
    "permissions": [ 
    "activeTab", 
    "https://ajax.googleapis.com/", 
    "cookies", 
    "<all_urls>" 
    ], 
    "content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'" 
} 

내가 크롬 확장이 샌드 박스는, 어떤 제안이 자신의 쿠키입니다했지만 무엇을 알아낼 수 있기 때문에 그것의 생각? 실제로

답변

1

I suppose it's because Chrome Extension is a sandbox so it has it's own cookies

, 당신은 당신이 확장 자신의 원점 (chrome-extension://somelongextensionidhere/)에 $.cookie 통해 설정하려는 쿠키를 결합하는 확장 자신의 페이지에서이를 사용하려는 때문이다. 그래서 이것은 효과가 없습니다.

chrome.cookies.set의 경우 사용 방법에 대한 설명서를 읽어야합니다.

chrome.cookies.set({ 
    url: "http://127.0.0.1:8000/", 
    name: "sessionid", 
    value: data.sessionid 
}); 
+0

감사 Xan :

적절한 호출은 다음과 같이해야한다. 문제는 콘솔에 다음과 같이 쓰여 있습니다 : >>> login.js : 15 Uncaught TypeError : undefined <<<의 속성 'set'을 읽을 수 없습니다. 그러나 매니페스트에서 권한에 "쿠키"가 있습니다 ... 이것은 login.js 스크립트입니다 , not popup.js –

+0

'login.js'는 콘텐츠 스크립트라고 가정합니다. 이 경우'chrome.cookies'를 사용할 수 없으며, 배경 스크립트에 위임해야합니다. – Xan

+0

예, 방금 manifest에 정의했습니다 : "background": { "scripts": [ "login.js"]} 그리고 작동합니다! 고맙습니다! –

관련 문제