Wie der Vue-Bereitstellungsserver domänenübergreifende Probleme löst

PHPz
Freigeben: 2023-05-08 11:23:08
Original
1131 Leute haben es durchsucht

Vue.js ist ein hervorragendes Front-End-Entwicklungsframework, das häufig bei der Entwicklung von Webanwendungen verwendet wird. Es hilft Entwicklern, schnell moderne, effiziente Anwendungen zu erstellen. Bei der tatsächlichen Entwicklung können jedoch domänenübergreifende Probleme auftreten, insbesondere wenn wir Vue.js-Anwendungen auf dem Server bereitstellen. In diesem Artikel wird detailliert beschrieben, wie domänenübergreifende Probleme in Vue.js-Anwendungen behoben werden.

Was ist domänenübergreifend?

Einfach ausgedrückt bedeutet domänenübergreifend das Anfordern von Ressourcen von einer anderen Website auf einer Seite einer Website. Domänenübergreifende Probleme werden hauptsächlich durch die Same-Origin-Richtlinie des Browsers verursacht. Die Same-Origin-Richtlinie ist eine clientseitige Sicherheitsrichtlinie, die verhindert, dass Webanwendungen private Informationen aus Dokumenten oder Skripten abrufen, die von einer Quelle aus einer anderen Quelle geladen werden.

Warum brauchen wir domänenübergreifend?

In der tatsächlichen Entwicklung müssen wir häufig domänenübergreifend auf APIs oder Ressourcen anderer Websites zugreifen. Beispielsweise müssen wir möglicherweise Daten von verschiedenen Servern beziehen oder Schnittstellen anderer Websites aufrufen. Beispielsweise müssen wir in einer Vue.js-Anwendung möglicherweise eine AJAX-Anfrage an den Server senden, um Daten abzurufen. Wenn der Server keine domänenübergreifenden Anfragen zulässt, können die Daten nicht abgerufen werden und die Anwendung funktioniert nicht ordnungsgemäß.

Methoden zur Lösung domänenübergreifender Probleme

  1. CORS-Header-Informationen auf der Serverseite hinzufügen

CORS (Cross-Origin Resource Sharing) ist ein Mechanismus, der es dem Browser ermöglicht, domänenübergreifende Anforderungen an den Server zu senden und dies zu ermöglichen Server, um domänenübergreifende Anfragen zurückzugeben. CORS ist ein von Browsern implementierter Standard, der domänenübergreifende Probleme für Front-End-Anwendungen lösen kann.

Die Methode zum Hinzufügen von CORS-Header-Informationen auf der Serverseite ist sehr einfach. Fügen Sie einfach einige spezifische Header-Informationen zur zurückgegebenen HTTP-Antwort hinzu. Die Details lauten wie folgt:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization
Nach dem Login kopieren

Die Bedeutung der obigen Header-Informationen ist wie folgt:

  • Access-Control-Allow-Origin: Geben Sie den zulässigen Domänennamen an. * bedeutet, dass alle Domänennamen zulässig sind oder ein oder mehrere Domänennamen angegeben werden können. * 表示允许所有域名,也可以指定一个或多个域名。
  • Access-Control-Allow-Methods:指定允许的 HTTP 方法。
  • Access-Control-Allow-Headers:指定允许的 HTTP 头信息。

这种方法的缺点是需要在服务器端添加头信息,如果应用程序需要访问多个不同的服务器或者 API,需要在每个服务器上都进行配置。

  1. 使用 JSONP

JSONP 是一种跨域解决方案,它利用了浏览器对跨域访问 <script> 标签的支持。JSONP 的原理是将跨域请求转化为一个 <script> 标签,这个标签的 src 属性指向解决跨域的服务端程序,服务端程序返回一段 JavaScript 代码,这段代码将返回的数据以参数的形式传递给前端页面上的一个函数。

Vue.js 中使用 JSONP 的方法很简单,只需引入一个 JSONP 库,并使用 $jsonp() 方法发送 JSONP 请求即可。具体如下:

import jsonp from 'jsonp';

jsonp('https://api.example.com/data', (err, res) => {
   if (err) {
      console.error(err);
   } else {
      console.log(res);
   }
});
Nach dem Login kopieren

此方法的缺点是 JSONP 只支持 GET 请求,而且只能返回 JSON 格式的数据。

  1. 使用反向代理

反向代理是一种服务器端解决跨域请求的方法。它利用了服务器之间的互联和通讯,使用服务器端的程序作为代理,将前端页面中的请求转化为后端程序的请求,从而避免了浏览器端的同源策略限制。

反向代理的实现方法很多,可以使用 Apache、Nginx 等 Web 服务器的反向代理模块,也可以使用 Node.js 中的 express 框架等实现反向代理的功能。

在 Vue.js 中使用反向代理的方法如下:

config/index.js 文件中添加如下代码:

module.exports = {
  dev: {
    // ...
    proxyTable: {
      '/api': {
          target: 'http://example.com',
          changeOrigin: true,
          pathRewrite: {
              '^/api': ''
          }
      }
    }
  }
};
Nach dem Login kopieren

上述代码表示,将所有以 /api 开头的请求转发到 http://example.com,并且在请求头中加上 Origin

Access-Control-Allow-Methods: Geben Sie zulässige HTTP-Methoden an.

Access-Control-Allow-Headers: Geben Sie zulässige HTTP-Header an.

Der Nachteil dieser Methode besteht darin, dass Header-Informationen auf der Serverseite hinzugefügt werden müssen. Wenn die Anwendung auf mehrere verschiedene Server oder APIs zugreifen muss, muss sie auf jedem Server konfiguriert werden.

    Verwendung von JSONP🎜🎜🎜JSONP ist eine domänenübergreifende Lösung, die die Browserunterstützung für den domänenübergreifenden Zugriff auf das <script>-Tag nutzt. Das Prinzip von JSONP besteht darin, domänenübergreifende Anforderungen in ein <script>-Tag umzuwandeln. Das Attribut src dieses Tags verweist auf das Serverprogramm, das domänenübergreifende Probleme löst . Das Serverprogramm gibt einen JavaScript-Code zurück, der die zurückgegebenen Daten als Parameter an eine Funktion auf der Front-End-Seite übergibt. 🎜🎜Die Methode zur Verwendung von JSONP in Vue.js ist sehr einfach. Führen Sie einfach eine JSONP-Bibliothek ein und verwenden Sie die Methode $jsonp(), um eine JSONP-Anfrage zu senden. Die Details sind wie folgt: 🎜rrreee🎜Der Nachteil dieser Methode besteht darin, dass JSONP nur GET-Anfragen unterstützt und Daten nur im JSON-Format zurückgeben kann. 🎜
      🎜Verwenden Sie einen Reverse-Proxy🎜🎜🎜Reverse-Proxy ist eine serverseitige Methode zur Lösung domänenübergreifender Anfragen. Es nutzt die Verbindung und Kommunikation zwischen Servern, verwendet das serverseitige Programm als Proxy und wandelt die Anforderungen auf der Front-End-Seite in Anforderungen des Back-End-Programms um, wodurch die Richtlinienbeschränkungen für denselben Ursprung vermieden werden der Browserseite. 🎜🎜Es gibt viele Möglichkeiten, einen Reverse-Proxy zu implementieren. Sie können das Reverse-Proxy-Modul von Webservern wie Apache und Nginx verwenden oder das Express-Framework in Node.js verwenden, um die Reverse-Proxy-Funktion zu implementieren. 🎜🎜Die Methode zur Verwendung des Reverse-Proxys in Vue.js ist wie folgt: 🎜🎜Fügen Sie den folgenden Code in die Datei config/index.js ein: 🎜rrreee🎜Der obige Code gibt an, dass alle Dateien mit enden / Anfragen, die mit api beginnen, werden an http://example.com weitergeleitet und das Feld Origin wird zum Anfrageheader hinzugefügt, um die zu senden Anfrage an den Zielserver. Dieser Ansatz erfordert Debugging und Tests während der Entwicklungsphase. 🎜🎜In einer Produktionsumgebung müssen wir den Reverse-Proxy im Server konfigurieren. Verwenden Sie einfach das Reverse-Proxy-Modul eines Webservers wie Nginx oder Apache. 🎜🎜Zusammenfassung🎜🎜Wenn Vue.js-Anwendungen auf dem Server bereitgestellt werden, ist die domänenübergreifende Nutzung ein häufiges Problem. In diesem Artikel werden drei Möglichkeiten zur Lösung domänenübergreifender Probleme beschrieben: Hinzufügen von CORS-Headern auf der Serverseite, Verwendung von JSONP und Verwendung eines Reverse-Proxys. In der tatsächlichen Entwicklung müssen geeignete Lösungen entsprechend unterschiedlichen Anforderungen und Szenarien ausgewählt werden. 🎜

Das obige ist der detaillierte Inhalt vonWie der Vue-Bereitstellungsserver domänenübergreifende Probleme löst. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!