Problèmes inter-domaines dans js
Le contenu de cet article concerne les problèmes inter-domaines de js. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
. L'exemple de code se trouve à l'adresse E/AjaxGGW/Pour les problèmes inter-domaines, reportez-vous aux nuggets de favoris (face correctement au cross-domain, pas de panique)
1. Cross-domaine : le navigateur ne peut pas exécuter de scripts provenant d'autres sites Web. Cela est dû à la politique Même origine du navigateur qui est parcourue. Restrictions de sécurité implémenté par le serveur sur JavaScript
2 La politique de même origine restreint les comportements suivants :
- Les cookies, LocalStorage et IndexDB ne peuvent pas être lus
- Les objets DOM et JS ne peuvent pas être obtenus
- La requête Ajax ne peut pas être envoyée
3 Scénarios inter-domaines courants
Même origine : même nom de domaine, même protocole et même port
- http://www.nealyang.cn/index.html
Appel http://www.nealyang.cn/server.php Non croisé -domain
http://www.nealyang.cn/index.htmlAppel http://www.neal.cn/server.php Cross-domaine, différents domaines principaux
-
http://abc.nealyang.cn/index.html Appel http://def.neal.cn/server.php Cross domaines , les noms de sous-domaines sont différents
- http://www.nealyang.cn:8080/index.html
Appel http://www.nealyang.cn/server.php Cross-domaine, différents ports
- https ://www.nealyang.cn/index.html
Appel http://www.nealyang.cn/server.php Inter-domaine , différents protocoles
4 Solution inter-domaines
1)jsonp inter-domaines Dans la page HTMLcharger des fichiers de ressources statiques à partir de différents noms de domaine via les balises correspondantes est autorisé par le navigateur. Généralement, nous pouvons créer dynamiquement la balise script , puis demander une URL avec des paramètres pour réaliser une communication inter-domaines. Cependant, le plus gros défaut est que seul obtient la demande 2) document.domain + iframe cross-domain (1.html et document.domain+iframe cross-domain.html) L'exigence la plus importante est que le nom de domaine principal soit le même, et deux pages html sont requises 3)window.name + iframe Cross-domain (origin.html et target.html ne sont pas dans les Nuggets) Attribut window.name Peut définir ou renvoyer une chaîne stockant le nom de la fenêtre. Sa magie est que la valeur du nom existera toujours lorsqu'elle sera chargée dans différentes pages ou différents domaines. Elle ne changera pas sans modification, et elle peut stocker des noms très longs (2 Mo) <🎜. >Supposons que la page d'index demande des données sur le serveur distant. Nous créons une balise iframe sous la page. Le src de l'iframe pointe vers l'adresse du fichier du serveur (la balise iframe src peut traverser le domaine de la fenêtre). est défini dans la valeur .name du fichier du serveur, puis lisez la valeur de window.name dans l'iframe dans index.html Si le index.html page et la page Si le src de l'iframe ne provient pas d'une source différente, vous ne pouvez rien opérer dans le cadre. Les deux pages se trouvent dans des domaines différents et la page source ne peut pas obtenir la valeur de nom de la page cible, car la valeur de nom n'est visible que par les pages du même domaine. 4) Location.hash + iframe cross-domain Cette méthode inter-domaines est similaire à celle présentée ci-dessus. Elle insère également dynamiquement un iframe, puis définit son src comme adresse du serveur. Le serveur génère également un code js et termine la transmission des données via la communication avec l'enfant. fenêtre. . Et location.hash est en fait le point d'ancrage de l'URL. Par exemple, après avoir ouvert l'URL de http://www.nealyang.cn#Nealyang. , saisissez-le dans l'emplacement de la console.hash renverra le champ #Nealyang. [Note] En fait, location.hash et window.hash sont similaires. Ce sont deux méthodes qui utilisent des propriétés d'objet globales, et ces deux méthodes le sont également. la même chose que jsop La même chose est que seules les requêtes get peuvent être implémentées 5) postMessage inter-domaines ( a.html et b.html) Il s'agit d'une API sympa proposée par H5, comprenant la méthode postMessage pour l'envoi d'informations et le Heure du message pour recevoir des informations. ① 发送信息的postMessage方法是向外界窗口发送信息 otherWindow.postMessage(message,targetOrigin); l otherWindow指的是目标窗口,是window.frames属性的成员或者是window.open方法创建的窗口。 l Message是要发送的消息,类型是String、Object l targetOringin是限定消息接收范围,不限制用星号* ② 接受信息的message事件 6) 跨域资源共享CORS 目前主流的跨域解决方案 1)简介 CORS是一个W3C标准,全称是“跨域资源共享”(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而客服了AJAX只能同源使用的限制。 CORS需要浏览器和服务器同时支持。 整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。 相关推荐:$(function(){
/*jQuery支持jsonp的实现方式 */
$.ajax({
url:"www.baidu.com",
type:"GET",
dataType:"jsonp", //请求方式为:jsonp
jsonpCallback:"callback",
data:{
"username":"yaofan"
}
})
})
<!-- 这种方式最主要的要求是主域名相同,假设目前a.nealyang.cn和b.nealyang.cn分别对应指定不同的ip服务器
a.nealyang.cn下有一个test.html文件
b.nealyang.cn下有一个1.html文件
-->
<p>A页面</p>
<!-- 利用iframe加载其他域下的文件 ,src中 -->
<iframestyle = "display:none" name = "iframe1" id = "iframe" src = "http://b.nealyang.cn/1.html" frameborder = "0">
</iframe>
<script type="text/javascript">
$(function(){
try{
document.domain = "nealyang.cn" //将document.domain设置为nealyang.cn,当iframe加载完毕后就可以获取nealyang.cn域下的全局对象
}catch(e){
$("#iframe").load(function(){
var jq = document.getElementById("iframe").contentWindow.$;
jq.get("http://nealyang.cn/test.json",function(data){
console.log(data);
});
})
}
})
</script>
<script type="text/javascript">
function getData(url,fn){
var iframe = document.createElement("iframe");
iframe.style.display = "none";
iframe.src = url;
iframe.onload = function(){
fn(iframe.contentWindow.location.hash.substring(1));
window.location.hash = "";
document.body.removeChild(iframe);
};
document.body.removeChild(iframe);
}
//get data from server
var url = "http://localhost:8080/data.php";
getData(url,function(data){
var jsondata = JSON.parse(data);
console.log(jsondata.name + "" +jsondata.age);
});
</script>
var onmessage = function(event){
var data = event.data;
var origin = event.origin;
}
if(typeof window.addEventListener != 'undefined'){
window.addEventListener('message',onmessage,false);
}else if(typeof window.attachEvent != 'undefined'){
window.attachEvent('onmessage', onmessage);
}
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de reconnaissance vocale en ligne Introduction : Avec le développement continu de la technologie, la technologie de reconnaissance vocale est devenue une partie importante du domaine de l'intelligence artificielle. Le système de reconnaissance vocale en ligne basé sur WebSocket et JavaScript présente les caractéristiques d'une faible latence, d'un temps réel et d'une multiplateforme, et est devenu une solution largement utilisée. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de reconnaissance vocale en ligne.

WebSocket et JavaScript : technologies clés pour réaliser des systèmes de surveillance en temps réel Introduction : Avec le développement rapide de la technologie Internet, les systèmes de surveillance en temps réel ont été largement utilisés dans divers domaines. L'une des technologies clés pour réaliser une surveillance en temps réel est la combinaison de WebSocket et de JavaScript. Cet article présentera l'application de WebSocket et JavaScript dans les systèmes de surveillance en temps réel, donnera des exemples de code et expliquera leurs principes de mise en œuvre en détail. 1. Technologie WebSocket

Pour résoudre le problème selon lequel jQuery.val() ne peut pas être utilisé, des exemples de code spécifiques sont requis. Pour les développeurs front-end, l'utilisation de jQuery est l'une des opérations courantes. Parmi eux, utiliser la méthode .val() pour obtenir ou définir la valeur d'un élément de formulaire est une opération très courante. Cependant, dans certains cas précis, le problème de ne pas pouvoir utiliser la méthode .val() peut se poser. Cet article présentera quelques situations et solutions courantes, et fournira des exemples de code spécifiques. Description du problème Lorsque vous utilisez jQuery pour développer des pages frontales, vous rencontrerez parfois

Introduction à l'utilisation de JavaScript et de WebSocket pour mettre en œuvre un système de commande en ligne en temps réel : avec la popularité d'Internet et les progrès de la technologie, de plus en plus de restaurants ont commencé à proposer des services de commande en ligne. Afin de mettre en œuvre un système de commande en ligne en temps réel, nous pouvons utiliser les technologies JavaScript et WebSocket. WebSocket est un protocole de communication full-duplex basé sur le protocole TCP, qui peut réaliser une communication bidirectionnelle en temps réel entre le client et le serveur. Dans le système de commande en ligne en temps réel, lorsque l'utilisateur sélectionne des plats et passe une commande

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

JavaScript et WebSocket : Construire un système efficace de prévisions météorologiques en temps réel Introduction : Aujourd'hui, la précision des prévisions météorologiques revêt une grande importance pour la vie quotidienne et la prise de décision. À mesure que la technologie évolue, nous pouvons fournir des prévisions météorologiques plus précises et plus fiables en obtenant des données météorologiques en temps réel. Dans cet article, nous apprendrons comment utiliser la technologie JavaScript et WebSocket pour créer un système efficace de prévisions météorologiques en temps réel. Cet article démontrera le processus de mise en œuvre à travers des exemples de code spécifiques. Nous

Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service

Quelles sont les questions impliquées dans l’examen Yulong 8 Wine Master ? Quelle est la réponse correspondante ? Comment réussir l’examen rapidement ? De nombreuses questions doivent trouver une réponse dans les activités de l'examen Master of Wine, et nous pouvons nous référer aux réponses pour les résoudre. Ces questions impliquent toutes la connaissance du vin. Si vous avez besoin d’une référence, jetons un œil à l’analyse détaillée des réponses aux questions de l’examen Yakuza 8 Wine Master ! Explication détaillée des réponses aux questions de l'examen Rulong 8 Wine Master 1. Questions sur le « vin ». Il s'agit d'une liqueur distillée produite par une distillerie créée par la famille royale. Elle est brassée à partir du sucre de canne à sucre cultivé en grande quantité à Hawaï. Quel est le nom de ce vin ? Réponse : Rhum 2. Question sur le « vin ». La photo montre une boisson à base de ginseng sec et de vermouth sec. Il se caractérise par l'ajout d'olives et est connu sous le nom de « cockney ».
