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