


Wie lassen sich domänenübergreifende Probleme lösen? Eine kurze Analyse gängiger Lösungen
Domänenübergreifend ist ein Szenario, das in der Entwicklung häufig vorkommt und auch eine häufig in Interviews diskutierte Frage ist. Die Beherrschung gängiger domänenübergreifender Lösungen und der dahinter stehenden Prinzipien kann nicht nur unsere Entwicklungseffizienz verbessern, sondern uns auch bei Vorstellungsgesprächen wohler machen.
Also Lassen Sie uns heute mit Ihnen über verschiedene gängige Methoden zur Lösung domänenübergreifender Probleme aus der Front-End-Perspektive sprechen.
Was ist domänenübergreifend?
Bevor wir über domänenübergreifend sprechen, werfen wir zunächst einen Blick auf die Zusammensetzung einer URL:
Die Zusammensetzung einer URL umfasst normalerweise Protokoll, Hostname, Portnummer und Pfad , Abfrageparameter und Anker Mehrere Teile.
Ein Beispiel für eine URL wird hier angezeigt:
https://www.example.com:8080/path/resource.html?page=1&sort=desc#header
Im obigen Beispiel:
● Das Protokoll ist HTTPS
● Der Hostname ist www.example.com
● Die Portnummer ist 8080
● Der Pfad ist /path /resource.html
● Der Abfrageparameter ist page=1&sort=desc
● Der Anker ist header
Die sogenannte Cross-Domain bedeutet, dass jeder Teil des Protokolls, des Hostnamens und der Portnummer in der Anforderungs-URL enthalten ist anders.
Am Beispiel der obigen URL gelten die folgenden Schreibmethoden als domänenübergreifend:
http://www.example.com:8080/ // 协议不同 https://www.example.a.com:8080/ // 主机名不同 https://www.example.com:8081/ // 端口号不同
Warum ist es domänenübergreifend? Tatsächlich ist das Auftreten domänenübergreifender Probleme begrenzt durch die Same-Origin-Richtlinie des Browsers.
Wenn browserseitige Skripte (JS-Dateien) auf Netzwerkressourcen in anderen Domänen zugreifen, treten domänenübergreifende Probleme auf.
所谓同源策略,其实是浏览器的一种安全机制,用于限制一个网页中的网络请求仅能够访问来自同一源(域名、协议和端口号均相同)的资源,主要目的是防止恶意网站通过脚本窃取其他网站的敏感数据,保障用户的隐私和安全。
Wie bereits erwähnt, wird das Auftreten domänenübergreifender Probleme durch die Same-Origin-Richtlinie des Browsers begrenzt, sodass sich die gängigen Lösungen zur Lösung domänenübergreifender Probleme tatsächlich um Browser drehen :
1. ProxyserverIn unserer üblichen Entwicklung ist die am häufigsten verwendete Lösung zur Lösung domänenübergreifender Probleme die Verwendung eines Proxyservers.
ProxyserverUm das domänenübergreifende Problem zu lösen, wird tatsächlich die Funktion erfasst, dass die Same-Origin-Richtlinie nur durch den Zugriff des Browsers auf den Server eingeschränkt ist und es keine Einschränkung für den Zugriff des Servers auf den Server gibt
Als Zwischenserver verfügt er über eine Anforderungsweiterleitungsfunktion. Konkret läuft die vom Front-End-Ingenieur geschriebene Webseite auf einem durch Gerüste wie Webpack erstellten Proxyserver. Wenn die Front-End-Webseite eine Netzwerkanforderung im Browser initiiert, wird die Anforderung tatsächlich an den Proxyserver gesendet , und dann der Proxyserver Die Anforderung wird an den Zielserver weitergeleitet, und dann wird die vom Zielserver zurückgegebene Antwort an den Client weitergeleitet. Der Proxyserver spielt in diesem Prozess eine Relaisrolle und kann Anforderungen und Antworten ändern, filtern und abfangen, um bestimmte Funktionen zu erreichen.
Da die Front-End-Webseite auf dem Proxyserver ausgeführt wird, gibt es kein domänenübergreifendes Problem.Wie leitet der Proxyserver Anforderungen in der Online- und Entwicklungsumgebung weiter?
1. Online-UmgebungIn der Online-Umgebung verwenden wir im Allgemeinen nginx als Reverse-Proxy, um die Front-End-Anfrage an die Zielschnittstelle weiterzuleiten.
nginx ist ein leichter Webserver mit hoher Parallelität, ereignisgesteuert, plattformübergreifend und kann sowohl unter Windows als auch unter Linux konfiguriert werden.
Die Hauptmethode, die es als Proxyserver verwendet, um domänenübergreifende Probleme in der Entwicklung zu lösen, besteht darin, den laufenden Port der Online-Front-End-URL abzuhören und die Anfrage dann weiterzuleiten, nachdem eine Anfrage mit einem speziellen Tag gefunden wurde.
2. Entwicklungsumgebung
In der Entwicklungsumgebung wird der Kern der Lösung domänenübergreifender Probleme mithilfe von erreicht, unabhängig davon, ob es sich um ein Front-End-Projekt handelt, das mit Hilfe von Webpack, Vite oder einem anderen Gerüst erstellt wurde http-proxy-middleware middleware . Der Kern der http-proxy-middleware-Middleware ist eine weitere Kapselung von
http-proxy. Hier ist ein Beispielcode, der http-proxy-middleware verwendet, um die Anforderungsweiterleitungsfunktion im Projekt zu implementieren:
const { createProxyMiddleware } = require('http-proxy-middleware'); module.exports = { server: { proxy: { // 将 /api/* 的请求代理到 http://localhost:3000/* '/api': { target: 'http://localhost:3000', changeOrigin: true, pathRewrite: { '^/api': '/' } } } } };
Dannkönnen wir den nativen Knoten selbst verwenden und die http-Proxy-Bibliothek verwenden, um eine Anforderungsweiterleitung zu erstellen Funktion Proxyserver Demo, interessierte Freunde können es selbst testen und spielen :
1. Zuerst müssen Sie einen leeren Ordner (auf Englisch benannt) als Projektordner erstellen und dann
npm init -y verwenden Befehl zum Installieren des Projekts. Projekt auf Knoten aktualisiert: npm init -y
2. Erstellen Sie dann eine
im Stammverzeichnis des Projekts, um domänenübergreifende Anforderungen zu initiieren: <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>请求转发测试</title>
</head>
<body>
<h1>请求转发测试</h1>
<p id="message"></p>
<script>
fetch('/api/login')
.then(response => response.text())
.then(data => {
document.getElementById('message').textContent = data;
});
</script>
</body>
</html>
3. Erstellen Sie dann eine neue
, um serverseitigen Code zu schreiben. Die Datei index.js ist die Kerndatei für die Implementierung eines Proxyservers mit Anforderungsweiterleitungsfunktion.
const http = require('http'); const httpProxy = require('http-proxy'); const fs = require('fs'); const path = require('path'); // 创建代理服务器实例 const proxy = httpProxy.createProxyServer({}); // 创建HTTP服务器 const server = http.createServer((req, res) => { if (req.url === '/' || req.url.endsWith('.html')) { // 读取HTML文件 const filename = path.join(__dirname, 'index.html'); fs.readFile(filename, 'utf8', (err, data) => { if (err) { res.writeHead(500); res.end('Error reading HTML file'); } else { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(data); } }); } else if (req.url.startsWith('/api')) { // 重写路径,替换跨域关键词 req.url = req.url.replace(/^\/api/, ''); // 将请求转发至目标服务器 proxy.web(req, res, { target: 'http://localhost:3000/', changeOrigin: true, }); } }); // 监听端口 server.listen(8080, () => { console.log('Server started on port 8080'); });
4. Dann schreiben Sie den Inhalt der target.js-Datei
des Zielservers, um den domänenübergreifenden Zugriff zu testen: 5. 打开终端,输入启动目标服务器的命令: 6. 再开一个终端启动代理服务器,等待浏览器端发起请求就可以啦: 7. 最后在浏览器里访问http://localhost:8080, 打开控制台即可查看效果: 可以发现,浏览器network模块的网络请求确实是访问的8080端口的方法,但是我们的服务器默默的做了请求转发的功能,并将请求转发获取到的内容返回到了前端页面上。 其实http-proxy是对node内置库http的进一步封装,网络请求的核心部分还是使用http创建一个服务器对象去访问的。感兴趣的同学可以再读读http-proxy的源码~ 除了代理服务器这种绕过浏览器同源策略的解决方式外,从前端的角度解决跨域问题还有如下一些常见的方法: JSONP的原理是通过动态创建
Ausziehbilder kostenlos KI-gestützte App zum Erstellen realistischer Aktfotos Online-KI-Tool zum Entfernen von Kleidung aus Fotos. KI-Kleiderentferner Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus! Einfach zu bedienender und kostenloser Code-Editor Chinesische Version, sehr einfach zu bedienen Leistungsstarke integrierte PHP-Entwicklungsumgebung Visuelle Webentwicklungstools Codebearbeitungssoftware auf Gottesniveau (SublimeText3)const http = require('http');
const server = http.createServer((req, res) => {
if (req.url.startsWith('/login')) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('我是localhost主机3000端口下的方法,恭喜你访问成功!');
} else {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, world!');
}
});
server.listen(3000, () => {
console.log('Target server is listening on port:3000');
})
node ./target.js //项目根目录下执行
node ./index.js //项目根目录下执行
1.借助JSONP
Heiße KI -Werkzeuge
Undress AI Tool
Undresser.AI Undress
AI Clothes Remover
Clothoff.io
Video Face Swap
Heißer Artikel
Heiße Werkzeuge
Notepad++7.3.1
SublimeText3 chinesische Version
Senden Sie Studio 13.0.1
Dreamweaver CS6
SublimeText3 Mac-Version
Heiße Themen
1597
29
1486
72

Der PHP -Code kann auf viele Arten ausgeführt werden: 1. Verwenden Sie die Befehlszeile, um den "PHP -Dateinamen" direkt einzugeben, um das Skript auszuführen. 2. Einlegen Sie die Datei in das Dokument -Root -Verzeichnis und greifen Sie über den Browser über den Webserver darauf zu. 3. Führen Sie es in der IDE aus und verwenden Sie das integrierte Debugging-Tool. V.

Das Verständnis des Konfigurationsdateipfads von NGINX und der ersten Einstellungen ist sehr wichtig, da er der erste Schritt zur Optimierung und Verwaltung eines Webservers ist. 1) Der Konfigurationsdateipfad ist normalerweise /etc/nginx/nginx.conf. Die Syntax kann mit dem Befehl nginx-t gefunden und getestet werden. 2) Die ersten Einstellungen umfassen globale Einstellungen (z. B. Benutzer, Worker_Processes) und HTTP -Einstellungen (z. B. inklusive log_format). Diese Einstellungen ermöglichen die Anpassung und Erweiterung gemäß den Anforderungen. Eine falsche Konfiguration kann zu Leistungsproblemen und Sicherheitslücken führen.

Linux -System beschränkt die Benutzerressourcen durch den Befehl ulimit, um eine übermäßige Verwendung von Ressourcen zu verhindern. 1.ulimit ist ein integrierter Shell-Befehl, mit dem die Anzahl der Dateideskriptoren (-n), die Speichergröße (-V), die Threadzahl (-U) usw. begrenzt werden kann, die in Soft Limit (aktueller effektiver Wert) und hartem Grenze (maximale Obergrenze) unterteilt sind. 2. Verwenden Sie den Befehl ulimit direkt zur vorübergehenden Änderung, wie z. B. Ulimit-N2048, ist jedoch nur für die aktuelle Sitzung gültig. 3. Für den dauerhaften Effekt müssen Sie /etc/security/limits.conf- und PAM -Konfigurationsdateien ändern und SessionRequiredpam_Limits.so hinzufügen. 4. Der SystemD -Dienst muss Lim in der Einheitsdatei einstellen

Bei der Konfiguration von NGINX im Debian -System finden Sie einige praktische Tipps: Die grundlegende Struktur der globalen Einstellungen der Konfigurationsdatei: Definieren Sie Verhaltensparameter, die den gesamten NGINX -Dienst beeinflussen, z. B. die Anzahl der Worker -Threads und die Berechtigungen für laufende Benutzer. Ereignisbearbeitungsteil: Die Entscheidung, wie NGINX mit Netzwerkverbindungen umgeht, ist eine wichtige Konfiguration zur Verbesserung der Leistung. HTTP -Service -Teil: Enthält eine große Anzahl von Einstellungen im Zusammenhang mit dem HTTP -Dienst und kann mehrere Server und Standortblöcke einbetten. Kernkonfigurationsoptionen Worker_Connections: Definieren Sie die maximale Anzahl von Verbindungen, die jeder Worker-Thread verarbeiten kann, normalerweise auf 1024. Multi_accept: Aktivieren Sie den Empfangsmodus mit mehreren Konnection-Empfang und verbessern Sie die Fähigkeit der gleichzeitigen Verarbeitung. S

Die SEO -Optimierungsfähigkeiten von Debianapache2 decken mehrere Ebenen ab. Hier sind einige Schlüsselmethoden: Keyword Research: Verwenden Sie Tools (z. B. Magic Tools), um die Kern- und Hilfsschlüsselwörter der Seite zu ermitteln. Hochwertige Inhaltserstellung: Erstellen Sie wertvolle und originelle Inhalte, und der Inhalt muss detailliert durchgeführt werden, um eine reibungslose Sprache und ein klares Format zu gewährleisten. Inhaltslayout und Strukturoptimierung: Verwenden Sie Titel und Untertitel, um das Lesen zu leiten. Schreiben Sie prägnante und klare Absätze und Sätze. Verwenden Sie die Liste, um Schlüsselinformationen anzuzeigen. Kombination von Multimedien wie Bildern und Videos, um die Expression zu verbessern. Das leere Design verbessert die Lesbarkeit des Textes. Technische Ebene SEO -Verbesserung: Robots.txt -Datei: Gibt die Zugriffsrechte von Suchmaschinencrawlern an. Beschleunigung der Webseite Beschleunigen Sie Lade: Optimiert mit Hilfe des Caching -Mechanismus und Apache -Konfiguration

Durch die Docker -Containerisierungstechnologie können PHP -Entwickler PHPStorm verwenden, um die Entwicklungseffizienz und die Umweltkonsistenz zu verbessern. Die spezifischen Schritte umfassen: 1. Erstellen Sie eine Dockerfile, um die PHP -Umgebung zu definieren; 2. Konfigurieren Sie die Docker -Verbindung in PhpStorm; 3. Erstellen Sie eine DockerCompon -Datei, um den Dienst zu definieren. 4. Konfigurieren Sie den Remote -PHP -Interpreter. Die Vorteile sind eine starke Umweltkonsistenz, und die Nachteile umfassen lange Startzeit und komplexes Debuggen.

Die Implementierung der automatisierten Bereitstellung von Docker im Debian -System kann auf verschiedene Weise durchgeführt werden. Hier sind die detaillierten Schrittehandbuch: 1. Installieren Sie zuerst Docker, stellen Sie sicher, dass Ihr Debian-System auf dem neuesten Stand ist: Sudoaptupdatesudoaptupgrade-y Als Nächstes installieren

NGINX kann die Leistung und Zuverlässigkeit der Website verbessern, um: 1. statische Inhalte als Webserver zu verarbeiten; 2. Anfragen als Reverse Proxy -Server; 3. Zuwenden von Anfragen als Lastausgleicher; 4. Reduzieren Sie den Backend -Druck als Cache -Server. NGINX kann die Leistung der Website durch Konfigurationsoptimierungen wie das Aktivieren der Gzip -Komprimierung und das Anpassen von Verbindungsbeamten erheblich verbessern.
