Maison > Article > développement back-end > Cinq solutions pour les sites Web multi-domaines
Étant donné que le navigateur utilise la politique de même origine, une requête inter-domaines est générée. Une page Web demande des ressources à une autre page Web avec un nom de domaine différent/un protocole différent/un port différent. Il s'agit d'un inter-domaine. Cet article propose 5 façons de résoudre le problème du cross-domain du site Web. Les amis intéressés peuvent y jeter un œil.
Parce que le navigateur utilise la politique de même origine
vise à assurer la sécurité des informations des utilisateurs et à empêcher les sites Web malveillants de voler des données. Si les pages Web ne répondent pas aux mêmes exigences d'origine, elles ne pourront pas :
<script></script> <img/> <iframe/> <link/> <video/> <audio/>peut être envoyé depuis différents domaines. Charger et exécuter des ressources. Politiques de même origine pour les autres plug-ins : les plug-ins tiers chargés par les navigateurs tels que Flash, l'applet Java, Silverlight et Google Gears ont également leurs propres politiques de même origine. Toutefois, ces politiques de même origine n'y appartiennent pas. aux politiques natives de même origine du navigateur. S'il y a des failles, elles peuvent être exploitées par des pirates informatiques, laissant les conséquences des attaques XSSLa soi-disant même origine signifie : le nom de domaine, le protocole réseau et le port. Le nombre est le même. Si l’un des trois est différent, un inter-domaine se produira. Par exemple : vous ouvrez
avec un navigateur, et lorsque le navigateur exécute le script JavaScript, il constate que le script envoie une requête au nom de domaine
. À ce moment, le navigateur signalera une erreur. une erreur inter-domaines.http://baidu.com
Il existe cinq solutions : http://cloud.baidu.com
$.ajax({ url: 'http://192.168.1.114/yii/demos/test.php', //不同的域 type: 'GET', // jsonp模式只有GET 是合法的 data: { 'action': 'aaron' }, dataType: 'jsonp', // 数据类型 jsonp: 'backfunc', // 指定回调函数名,与服务器端接收的一致,并回传回来 })
3f1c4e4b6b16bbbd69b2ee476dc4f83a
2. Transfert de demande HTTP en arrière-plan3f1c4e4b6b16bbbd69b2ee476dc4f83a
3f1c4e4b6b16bbbd69b2ee476dc4f83a
Utilisez le transfert HttpClinet pour le transfert (cette méthode n'est pas recommandée pour des exemples simples)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); } }
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; } }
希望本篇文章对你有所帮助。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!