[英]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.