Fünf Lösungen für domänenübergreifende Websites
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/>
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: 'http://192.168.1.114/yii/demos/test.php', //不同的域 type: 'GET', // jsonp模式只有GET 是合法的 data: { 'action': 'aaron' }, dataType: 'jsonp', // 数据类型 jsonp: 'backfunc', // 指定回调函数名,与服务器端接收的一致,并回传回来 })
- 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)
- 3. Konfigurieren Sie Cors mit demselben Ursprung im Hintergrund ( 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(); }
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); } }
- 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; } }
- 如果是两个端口想互相访问接口 在
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; } }
希望本篇文章对你有所帮助。
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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.

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 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

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 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 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.

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.

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
