我可以从服务器发送可通过浏览器扩展程序访问的cookie吗?

时间:2018-11-07 14:10:23

标签: javascript php ajax

我有一个项目,我的浏览器扩展程序对其服务器进行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调用发送到正确的域,即用户登录的域。问题是我的扩展程序如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

我通过创建一个不需要登录用户的服务器端脚本来解决了这个问题,该脚本返回一个JSON字符串,该字符串返回用户是否使用该域名登录。

浏览器扩展中的background.js使用链接的承诺将字符串的AJAX调用发送到每个域名的脚本。结果显示已登录哪个域或未登录任何域。

服务器端:

import requests
from bs4 import BeautifulSoup

url1 = "https://seekingalpha.com/article/4253393-boeing-bear-wakens"
url2 = "https://www.dqindia.com/accenture-helps-del-monte-foods-unlock-innovation-drive-business-growth-cloud/"

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}

url = requests.get(url1, headers=headers)
html = url.text
soup = BeautifulSoup(html, "html.parser")

paragraphs = soup.find_all('p')

for p in paragraphs:
    print (p.text)

浏览器扩展:

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;