Inhaltsverzeichnis
1. Was ist Leapfrog?
2. Warum werden domänenübergreifende Anfragen generiert?
3. Was ist die Same-Origin-Richtlinie?
4. Warum verwenden Browser dieselbe Ursprungsrichtlinie?
Es gibt fünf Lösungen:
1. Verwenden Sie JSONP im Frontend (nicht empfohlen)
Verwenden Sie die HttpClinet-Weiterleitung für die Weiterleitung (diese Methode wird für einfache Beispiele nicht empfohlen)
Verwenden Sie für die domänenübergreifende Konfiguration auf SpringBoot2.0 die folgende Codekonfiguration, um Ihre domänenübergreifenden Front-End- und Back-End-Anforderungsprobleme perfekt zu lösen
5、使用nginx做转发
Heim Backend-Entwicklung PHP-Tutorial Fünf Lösungen für domänenübergreifende Websites

Fünf Lösungen für domänenübergreifende Websites

Apr 30, 2019 pm 01:50 PM
ajax http

Da der Browser die Same-Origin-Richtlinie verwendet, wird eine domänenübergreifende Anfrage generiert. Eine Webseite fordert Ressourcen von einer anderen Webseite mit einem anderen Domänennamen/einem anderen Protokoll/einem anderen Port an. Dies ist domänenübergreifend. Dieser Artikel bietet 5 Möglichkeiten, das Problem der domänenübergreifenden Website zu lösen. Interessierte Freunde können einen Blick darauf werfen.

1. Was ist Leapfrog?

  • Eine Webseite fordert Ressourcen von einer anderen Webseite mit einem anderen Domänennamen/einem anderen Protokoll/einem anderen Port an. Dies ist domänenübergreifend.
  • Domänenübergreifender Grund: Auf der aktuellen Website zur Anforderung von Domänennamen ist das Senden anderer Domänennamen über Ajax-Anfragen standardmäßig nicht zulässig.

2. Warum werden domänenübergreifende Anfragen generiert?

  • Weil der Browser die Same-Origin-Richtlinie verwendet

3. Was ist die Same-Origin-Richtlinie?

  • Die Same-Origin-Richtlinie ist eine bekannte Sicherheitsrichtlinie, die von Netscape vorgeschlagen wird. Alle Browser, die JavaScript unterstützen, verwenden diese Richtlinie. Die Same-Origin-Richtlinie ist die wichtigste und grundlegendste Sicherheitsfunktion des Browsers. Wenn die Same-Origin-Richtlinie fehlt, können die normalen Funktionen des Browsers beeinträchtigt sein. Man kann sagen, dass das Web auf der Grundlage der Same-Origin-Richtlinie aufgebaut ist und der Browser nur eine Implementierung der Same-Origin-Richtlinie ist.

4. Warum verwenden Browser dieselbe Ursprungsrichtlinie?

  • dient dazu, die Sicherheit der Benutzerinformationen zu gewährleisten und zu verhindern, dass böswillige Websites Daten stehlen. Wenn die Webseiten nicht dieselben Herkunftsanforderungen erfüllen, können sie Folgendes nicht tun:

    • 1. Gemeinsame Cookies, LocalStorage, IndexDB
    • 2. DOM
    • 3. AJAX-Anfragen können nicht gesendet werden

Nicht-absolute Ursprungsrichtlinie: Tags mit src-Attributen wie

<script></script>
<img/>
<iframe/>
<link/>
<video/>
<audio/>
Nach dem Login kopieren

kann von verschiedenen Domänen gesendet werden. Ressourcen laden und ausführen. Same-Origin-Richtlinien für andere Plug-Ins: Plug-Ins von Drittanbietern, die von Browsern wie Flash, Java-Applet, Silverlight und Google Gears geladen werden, haben ebenfalls ihre eigenen Same-Origin-Richtlinien. Diese Same-Origin-Richtlinien gelten jedoch nicht Wenn es Lücken in den nativen Same-Origin-Richtlinien des Browsers gibt, können diese von Hackern ausgenutzt werden und die Folgen von XSS-Angriffen hinterlassen.

Der sogenannte Same-Origin bedeutet: der Domänenname, das Netzwerkprotokoll und der Port Wenn eine der drei Nummern gleich ist, kommt es zu domänenübergreifenden Problemen. Beispiel: Sie öffnen http://baidu.com mit einem Browser und wenn der Browser das JavaScript-Skript ausführt, stellt er fest, dass das Skript eine Anfrage an den http://cloud.baidu.com-Domänennamen sendet. Zu diesem Zeitpunkt meldet der Browser einen Fehler ein domänenübergreifender Fehler.

Es gibt fünf Lösungen:

1. Verwenden Sie JSONP im Frontend (nicht empfohlen)

  • Wenn wir normalerweise JSON-Daten anfordern, gibt der Server Folgendes zurück eine Zeichenfolge mit Daten vom Typ JSON, und wenn wir den JSONP-Modus zum Anfordern von Daten verwenden, gibt der Server einen ausführbaren JavaScript-Code zurück. Da das domänenübergreifende Prinzip von JSONP darin besteht, den Quellcode des Skripts dynamisch zu laden, können wir die Parameter nur über die URL übergeben, sodass der Typtyp von JSONP nur abgerufen werden kann. Beispiel:
$.ajax({
    url: &#39;http://192.168.1.114/yii/demos/test.php&#39;, //不同的域
    type: &#39;GET&#39;, // jsonp模式只有GET 是合法的
    data: {
        &#39;action&#39;: &#39;aaron&#39;
    },
    dataType: &#39;jsonp&#39;, // 数据类型
    jsonp: &#39;backfunc&#39;, // 指定回调函数名,与服务器端接收的一致,并回传回来
})
Nach dem Login kopieren
  • Der gesamte Prozess der Datenanforderung im JSONP-Modus: Der Client sendet eine Anfrage und gibt einen ausführbaren Funktionsnamen an (hier übernimmt jQuery den Kapselungsprozess, generiert automatisch eine Rückruffunktion für Sie und entnimmt die Daten für die Erfolgsattributmethode ) aufrufen, anstatt ein Callback-Handle zu übergeben), akzeptiert der Server den Namen der Backfunc-Funktion und sendet dann die Daten in Form von tatsächlichen Parametern
  • (im JQuery-Quellcode die Implementierung von JSONP Fügen Sie das vom Server bereitgestellte js-Skript dynamisch hinzu. Wenn der <script>-Code eingefügt wird, wird die Funktion ausgeführt > werden gleichzeitig entfernt. Wenn die Anfrage unter demselben Domainnamen erfolgt, funktioniert sie wie eine normale Ajax-Anfrage)<script><script>
  • 2. Weiterleitung von Http-Anfragen im Hintergrund<🎜. >

Verwenden Sie die HttpClinet-Weiterleitung für die Weiterleitung (diese Methode wird für einfache Beispiele nicht empfohlen)

    try {
        HttpClient client = HttpClients.createDefault();            //client对象
        HttpGet get = new HttpGet("http://localhost:8080/test");    //创建get请求
        CloseableHttpResponse response = httpClient.execute(get);   //执行get请求
        String mes = EntityUtils.toString(response.getEntity());    //将返回体的信息转换为字符串
        System.out.println(mes);
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    Nach dem Login kopieren
  • 3. Konfigurieren Sie Cors mit demselben Ursprung im Hintergrund ( empfohlen)

Verwenden Sie für die domänenübergreifende Konfiguration auf SpringBoot2.0 die folgende Codekonfiguration, um Ihre domänenübergreifenden Front-End- und Back-End-Anforderungsprobleme perfekt zu lösen

  • Für die domänenübergreifende Konfiguration auf SpringBoot2.0 verwenden Sie die folgende Codekonfiguration, um Ihre domänenübergreifenden Front-End- und Back-End-Anforderungsprobleme perfekt zu lösen
  • import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.cors.CorsConfiguration;
    import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
    import org.springframework.web.filter.CorsFilter;
    
    /**
     * 实现基本的跨域请求
     * @author linhongcun
     *
     */
    @Configuration
    public class CorsConfig {
    
        @Bean
        public CorsFilter corsFilter() {
            final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
            final CorsConfiguration corsConfiguration = new CorsConfiguration();
            /*是否允许请求带有验证信息*/
            corsConfiguration.setAllowCredentials(true);
            /*允许访问的客户端域名*/
            corsConfiguration.addAllowedOrigin("*");
            /*允许服务端访问的客户端请求头*/
            corsConfiguration.addAllowedHeader("*");
            /*允许访问的方法名,GET POST等*/
            corsConfiguration.addAllowedMethod("*");
            urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
            return new CorsFilter(urlBasedCorsConfigurationSource);
        }
    
    
    
    }
    Nach dem Login kopieren
4. Verwenden Sie das SpringCloud-Gateway

Service Gateway (zuul), auch Routing Center genannt, wird für den einheitlichen Zugriff auf alle API-Schnittstellen und Wartungsdienste verwendet.
  • Spring Cloud Zuul realisiert die automatisierte Wartung von Serviceinstanzen durch die Integration mit Spring Cloud Eureka, sodass wir bei Verwendung der Service-Routing-Konfiguration keine herkömmlichen Routing-Konfigurationsmethoden verwenden müssen, um einen bestimmten Service anzugeben Instanzadresse verwenden Sie einfach die Parameter der Ant-Modus-Konfigurationsdatei

5、使用nginx做转发

  • 现在有两个网站想互相访问接口 在http://a.a.com:81/A中想访问 http://b.b.com:81/B 那么进行如下配置即可
  • 然后通过访问 www.my.com/A 里面即可访问 www.my.com/B
server {
        listen       80;
        server_name  www.my.com;
        location /A {
            proxy_pass  http://a.a.com:81/A;
            index  index.html index.htm;
        }
        location /B {
            proxy_pass  http://b.b.com:81/B;
            index  index.html index.htm;
        }
    }
Nach dem Login kopieren
  • 如果是两个端口想互相访问接口 在http://b.b.com:80/Api中想访问 http://b.b.com:81/Api 那么进行如下配置即可
  • 使用nginx转发机制就可以完成跨域问题
server {
        listen       80;
        server_name  b.b.com;
        location /Api {
            proxy_pass  http://b.b.com:81/Api;
            index  index.html index.htm;
        }
    }
Nach dem Login kopieren

希望本篇文章对你有所帮助。

Das obige ist der detaillierte Inhalt vonFünf Lösungen für domänenübergreifende Websites. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So beheben Sie den 403-Fehler, der bei einer jQuery-AJAX-Anfrage auftritt So beheben Sie den 403-Fehler, der bei einer jQuery-AJAX-Anfrage auftritt Feb 20, 2024 am 10:07 AM

Titel: Methoden und Codebeispiele zur Behebung von 403-Fehlern in jQuery-AJAX-Anfragen. Der 403-Fehler bezieht sich auf eine Anfrage, dass der Server den Zugriff auf eine Ressource verbietet. Dieser Fehler tritt normalerweise auf, weil der Anfrage die Berechtigungen fehlen oder sie vom Server abgelehnt wird. Wenn Sie jQueryAJAX-Anfragen stellen, stoßen Sie manchmal auf diese Situation. In diesem Artikel wird erläutert, wie dieses Problem gelöst werden kann, und es werden Codebeispiele bereitgestellt. Lösung: Berechtigungen prüfen: Stellen Sie zunächst sicher, dass die angeforderte URL-Adresse korrekt ist und stellen Sie sicher, dass Sie über ausreichende Berechtigungen für den Zugriff auf die Ressource verfügen.

So beheben Sie den Fehler 403 der jQuery AJAX-Anfrage So beheben Sie den Fehler 403 der jQuery AJAX-Anfrage Feb 19, 2024 pm 05:55 PM

jQuery ist eine beliebte JavaScript-Bibliothek zur Vereinfachung der clientseitigen Entwicklung. AJAX ist eine Technologie, die asynchrone Anfragen sendet und mit dem Server interagiert, ohne die gesamte Webseite neu zu laden. Wenn Sie jedoch jQuery zum Senden von AJAX-Anfragen verwenden, treten manchmal 403-Fehler auf. Bei 403-Fehlern handelt es sich in der Regel um vom Server verweigerte Zugriffsfehler, möglicherweise aufgrund von Sicherheitsrichtlinien oder Berechtigungsproblemen. In diesem Artikel besprechen wir, wie Sie bei einer jQueryAJAX-Anfrage den Fehler 403 beheben können

Verstehen Sie gängige Anwendungsszenarien der Webseitenumleitung und verstehen Sie den HTTP-301-Statuscode Verstehen Sie gängige Anwendungsszenarien der Webseitenumleitung und verstehen Sie den HTTP-301-Statuscode Feb 18, 2024 pm 08:41 PM

Verstehen Sie die Bedeutung des HTTP 301-Statuscodes: Häufige Anwendungsszenarien der Webseitenumleitung. Mit der rasanten Entwicklung des Internets werden die Anforderungen der Menschen an die Webseiteninteraktion immer höher. Im Bereich Webdesign ist die Webseitenumleitung eine gängige und wichtige Technologie, die über den HTTP-301-Statuscode implementiert wird. In diesem Artikel werden die Bedeutung des HTTP 301-Statuscodes und häufige Anwendungsszenarien bei der Webseitenumleitung untersucht. Der HTTP-Statuscode 301 bezieht sich auf eine permanente Weiterleitung (PermanentRedirect). Wenn der Server die des Clients empfängt

Wie erhalte ich Variablen aus der PHP-Methode mit Ajax? Wie erhalte ich Variablen aus der PHP-Methode mit Ajax? Mar 09, 2024 pm 05:36 PM

Die Verwendung von Ajax zum Abrufen von Variablen aus PHP-Methoden ist ein häufiges Szenario in der Webentwicklung. Durch Ajax kann die Seite dynamisch abgerufen werden, ohne dass die Daten aktualisiert werden müssen. In diesem Artikel stellen wir vor, wie man Ajax verwendet, um Variablen aus PHP-Methoden abzurufen, und stellen spezifische Codebeispiele bereit. Zuerst müssen wir eine PHP-Datei schreiben, um die Ajax-Anfrage zu verarbeiten und die erforderlichen Variablen zurückzugeben. Hier ist ein Beispielcode für eine einfache PHP-Datei getData.php:

Wie kann das Problem des jQuery AJAX-Fehlers 403 gelöst werden? Wie kann das Problem des jQuery AJAX-Fehlers 403 gelöst werden? Feb 23, 2024 pm 04:27 PM

Wie kann das Problem des jQueryAJAX-Fehlers 403 gelöst werden? Bei der Entwicklung von Webanwendungen wird jQuery häufig zum Senden asynchroner Anfragen verwendet. Allerdings kann bei der Verwendung von jQueryAJAX manchmal der Fehlercode 403 auftreten, der darauf hinweist, dass der Zugriff vom Server verboten ist. Dies wird normalerweise durch serverseitige Sicherheitseinstellungen verursacht, es gibt jedoch Möglichkeiten, das Problem zu beheben. In diesem Artikel wird erläutert, wie Sie das Problem des jQueryAJAX-Fehlers 403 lösen können, und es werden spezifische Codebeispiele bereitgestellt. 1. machen

Wie implementiert man HTTP-Streaming mit C++? Wie implementiert man HTTP-Streaming mit C++? May 31, 2024 am 11:06 AM

Wie implementiert man HTTP-Streaming in C++? Erstellen Sie einen SSL-Stream-Socket mit Boost.Asio und der asiohttps-Clientbibliothek. Stellen Sie eine Verbindung zum Server her und senden Sie eine HTTP-Anfrage. Empfangen Sie HTTP-Antwortheader und drucken Sie sie aus. Empfängt den HTTP-Antworttext und gibt ihn aus.

PHP und Ajax: Erstellen einer Autovervollständigungs-Vorschlags-Engine PHP und Ajax: Erstellen einer Autovervollständigungs-Vorschlags-Engine Jun 02, 2024 pm 08:39 PM

Erstellen Sie eine Engine für Autovervollständigungsvorschläge mit PHP und Ajax: Serverseitiges Skript: Verarbeitet Ajax-Anfragen und gibt Vorschläge zurück (autocomplete.php). Client-Skript: Ajax-Anfrage senden und Vorschläge anzeigen (autocomplete.js). Praktischer Fall: Fügen Sie ein Skript in die HTML-Seite ein und geben Sie die Kennung des Sucheingabeelements an.

Welcher Statuscode wird bei einem HTTP-Anfrage-Timeout zurückgegeben? Welcher Statuscode wird bei einem HTTP-Anfrage-Timeout zurückgegeben? Feb 18, 2024 pm 01:58 PM

Die HTTP-Anfrage läuft ab und der Server gibt häufig den Statuscode 504GatewayTimeout zurück. Dieser Statuscode zeigt an, dass der Server bei der Ausführung einer Anforderung immer noch nicht in der Lage ist, die für die Anforderung erforderlichen Ressourcen abzurufen oder die Verarbeitung der Anforderung nach einer gewissen Zeit nicht abzuschließen. Es handelt sich um einen Statuscode der 5xx-Reihe, der darauf hinweist, dass beim Server ein vorübergehendes Problem oder eine Überlastung aufgetreten ist, was dazu führt, dass die Anfrage des Clients nicht korrekt verarbeitet werden kann. Im HTTP-Protokoll haben verschiedene Statuscodes spezifische Bedeutungen und Verwendungszwecke, und der Statuscode 504 wird verwendet, um Probleme mit der Zeitüberschreitung von Anfragen anzuzeigen. im Kunden

See all articles