Maison > Article > développement back-end > Comment Nginx implémente-t-il l'accès entre domaines ? Implémentation de l'accès inter-domaines Nginx
Cet article vous présente comment Nginx implémente l'accès inter-domaines ? La mise en œuvre de l'accès inter-domaines Nginx a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère que cela vous sera utile.
Le cross-domain fait référence à la demande de ressources d'un autre nom de domaine à partir d'une page Web d'un nom de domaine. Par exemple, demandez les ressources de www.b.com depuis la page www.a.com.
Les navigateurs interdisent généralement l'accès entre domaines par défaut. Parce qu’il n’est pas sécurisé, il est sujet aux attaques CSRF (cross-site request forgery).
Nginx ajoute HTTP tel que Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow -En-têtes, etc. informations d'en-tête pour contrôler la mise en cache du navigateur.
"Access-Control-Allow-Origin" Définissez le site Web autorisé à lancer des requêtes inter-domaines
"Access-Control-Allow-Methods" Définissez les méthodes HTTP autorisées à lancer des requêtes inter-domaines requêtes de domaine
Le paramètre "Access -Control-Allow-Headers" permet aux requêtes inter-domaines d'inclure des en-têtes Content-Type
Syntax: add_header name value [always]; Default: — Context: http, server, location, if in location
# 配置网站www.a.com server { server_name www.a.com; root /vagrant/a; # 允许 http://www.b.com 使用 GET,POST,DELETE HTTP方法发起跨域请求 add_header Access-Control-Allow-Origin http://www.b.com; add_header Access-Control-Allow-Method GET,POST,DELETE; } # 配置网站www.b.com server { server_name www.b.com; root /vagrant/b; } # 配置网站www.c.com server { server_name www.c.com; root /vagrant/c; }
/vagrant/a/a.txt
, /vagrant/b/index.html
, /vagrant/c/index.html
fichiers vim /vagrant/a/a.txt
Hello,I'm a!
/vagrant/b/index.html
nbsp;html> <meta> <title>Ajax跨站访问b</title> <h1>Ajax跨站访问b - </h1> <script></script> <script> $(function(){ $.ajax({ url: "http://www.a.com/a.txt", type: "GET", success: function (data) { $('h1').append(data); }, error: function (data) { $('h1').append('请求失败!'); } }); }) </script>
/vagrant/c/index.html
nbsp;html> <meta> <title>Ajax跨站访问c</title> <h1>Ajax跨站访问c - </h1> <script></script> <script> $(function(){ $.ajax({ url: "http://www.a.com/a.txt", type: "GET", success: function (data) { $('h1').append(data); }, error: function (data) { $('h1').append('请求失败!'); } }); }) </script>
windows : C:WindowsSystem32driversetchosts
linux : /etc/hosts
Ajoutez le contenu suivant et enregistrez-le (192.168.33.88 est l'IP de l'auteur machine virtuelle, vous devez la remplacer par votre propre IP) :
192.168.33.88 www.a.com 192.168.33.88 www.b.com 192.168.33.88 www.c.com
http://www.b.com/index.html
et http://www.c.com/index.html
Ajax跨站访问b - Hello,I'm a!
Ajax跨站访问c - 请求失败!Ouvrir Parcourir Dans la console du mode développeur du serveur, vous pouvez également trouver une erreur sur la page http://www.c.com/index.html :
Failed to load http://www.a.com/a.txt: The 'Access-Control-Allow-Origin' header has a value 'http://www.b.com' that is not equal to the supplied origin. Origin 'http://www.c.com' is therefore not allowed access.Articles connexes recommandés :
Nginx sert de service Web de ressources statiques pour contrôler la mise en cache du navigateur et implémenter la protection contre les liens hypertextes
Nginx sert de un service Web de ressources statiques et effectue une compression des ressources statiques
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!