Heim >Backend-Entwicklung >PHP-Tutorial >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.
Weil der Browser die Same-Origin-Richtlinie verwendet
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:
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.
$.ajax({ url: 'http://192.168.1.114/yii/demos/test.php', //不同的域 type: 'GET', // jsonp模式只有GET 是合法的 data: { 'action': 'aaron' }, dataType: 'jsonp', // 数据类型 jsonp: 'backfunc', // 指定回调函数名,与服务器端接收的一致,并回传回来 })
3f1c4e4b6b16bbbd69b2ee476dc4f83a
-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)3f1c4e4b6b16bbbd69b2ee476dc4f83a
3f1c4e4b6b16bbbd69b2ee476dc4f83a
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(); }
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); } }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.
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
那么进行如下配置即可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!