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