繁体   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