簡體   English   中英

我可以從服務器發送可通過瀏覽器擴展程序訪問的cookie嗎?

[英]Can I send a cookie from my server which can be accessed by a browser extension?

我有一個項目,其中我的瀏覽器擴展程序向我的服務器發出AJAX調用。 我可以使用幾個不同的FQDN域名登錄服務器
例如

https://myserverLANHostname/script_to_call
https://LANipAddress/script_to_call
https://www.example.io/script_to_call

我的LAMP服務器為每個域生成一個不同的會話ID,並且登錄憑據與該會話ID相關聯。 網頁受到保護,因此必須登錄用戶才能運行php腳本。

因此,登錄到一個域名的用戶無法通過尋址另一個域來訪問服務器。 例如,如果服務器的LAN地址為https:// localName,則他們必須重新登錄才能訪問https://internet_domain_name.io上的頁面。

瀏覽器擴展必須將AJAX調用發送到正確的域,即用戶登錄的域。 問題是我的擴展程序如何實現這一目標?

我通過創建不需要登錄用戶的服務器端腳本解決了此問題,該腳本返回一個JSON字符串,該字符串返回用戶是否在該域名上登錄。

瀏覽器擴展中的background.js使用鏈接的承諾將字符串的AJAX調用發送到每個域名的腳本。 結果顯示哪個域已登錄或沒有域登錄。

服務器端:

session_start();
$signedIn = "";
$json_array ="";

//determine value of signedIn from session
(isset($_SESSION['serverUser'])) ? 
    $signedIn = 1: 
    $signedIn = 0;

$json_array = "{\"signedIn\":$signedIn}"; 

header('Content-Type: application/json');
echo $json_array;

瀏覽器擴展:

function init() {
  fetch(url1)
  .then(processJSONtoObj)
  .then(function(dataObject) {
      //test if user signed
      if(dataObject.signedIn) {
        //user signed into domain 1

      } else {
         return fetch(url2)
      }
  })
  .then(processJSONtoObj)
  .then(function(dataObj2) {
      //test if user signed
      if(dataObject2.signedIn) {
        //user signed into domain 2

      } else {
         //user is not signed into either
      }
  })
}
init();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM