Могу ли я отправить файл cookie с моего сервера, к которому может получить доступ расширение браузера? - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть проект, в котором расширение моего браузера делает AJAX-вызовы на мой сервер. Я могу войти на сервер с несколькими разными доменными именами FQDN
например

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

Мой сервер LAMP генерирует разные идентификаторы сеанса для каждого домена, а учетные данные для входа связаны с идентификатором сеанса. Веб-страницы защищены таким образом, что пользователь должен войти в систему для запуска сценариев php.

Таким образом, пользователь, вошедший в одно доменное имя, не может получить доступ к серверу, обратившись к другому домену. Например, если адрес локальной сети сервера https://localName, они не могут получить доступ к страницам https://internet_domain_name.io без повторного входа.

Расширение браузера должно отправлять вызовы AJAX в правильный домен, т. Е. Тот, в который вошел пользователь. Вопрос в том, как мое расширение может достичь этого?

1 Ответ

0 голосов
/ 12 апреля 2019

Я решил эту проблему, создав сценарий на стороне сервера, который не требует входа в систему, он возвращает строку 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...