nginxのクロスドメインの設定およびHTTPS

1.クロスドメインとは何ですか?

クロスドメイン:スクリプトに他のサイトを実行できないブラウザを指します。これは、ブラウザの同一生成元ポリシーによって引き起こされたJavaScriptに課せられたブラウザのセキュリティ制限されている(別のドメイン内のリソースを要求するには、ドメインの試みを文書またはスクリプトを参照して、広範なクロスドメインがあります)

たとえば:ページBには、契約のページ、ドメイン名、ポート、異なるサブドメイン名B、アクセス操作がドメイン間で行われ、およびセキュリティ上の問題のためのブラウザは、一般的にクロスドメインアクセスを制限され、場合、リソースのページを取得したいです、クロスドメインリクエストリソースに許可されていません。注意:クロスドメインアクセス制限は、実際には、あるブラウザを制限します理解することが重要です!

広範なクロスドメイン:

1.) 资源跳转:A链接、重定向、表单提交

2.) 资源嵌入:<link>、<script><img>、<frame>等dom标签,还有样式中background:url()、@font-face()等文件外链

3.) 脚本请求:js发起的ajax请求、dom和js对象的跨域操作等其实我们通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景。

2.元ポリシーとは何ですか?

ソース戦略/ SOP(同一生成元ポリシー)は、それが同一生成元ポリシーの欠如は、ブラウザのXSSの脆弱性がある場合は、ブラウザのコアは、また、最も基本的なセキュリティ機能ですあり、1995年にNetscapeがブラウザを導入し、慣習ですCSFR攻撃。相同は、いわゆる「プロトコル+ドメイン名+ポート」と同じ3(を参照其中有一个不同都会产生跨域)、二つの異なるドメイン名が同じIPアドレスを指す場合でも、またホモログ。

行動を以下のいくつかの同一生成元ポリシーの制限:

1.) Cookie、LocalStorage 和 IndexDB 无法读取

2.) DOM 和 Js对象无法获得

3.) AJAX 请求不能发送

3.一般的なクロスドメインのシナリオ

クロスドメインアクセスの3例

、2つのサイトがあると仮定し、Aサイトの展開でます。http:// localhost:ローカルIPポート81で81。

Bホームページは、展開します。http:// localhost:82ローカルIPポート82です。

ウェブサイトのページは現在、情報Bサイトにアクセスしたい(jqueryの非同期要求を使用して、ここで)以下のように、A Webページのコードがあります

$(関数(){

    $に.get( "HTTP:// localhostの:82 / API /値"、{}関数(結果){

          $( "#ショー")HTML(結果)。

  })})。

 

上記のエラーメッセージからわかるように、クロスドメインの問題を表示されます!

4 。クロスドメインソリューション

1、 通过jsonp跨域
2、 document.domain + iframe跨域
3、 location.hash + iframe
4、 window.name + iframe跨域
5、 postMessage跨域
6、 跨域资源共享(CORS)
7、 nginx代理跨域
8、 nodejs中间件代理跨域
9、 WebSocket协议跨域

5 。nginxのクロスドメインソリューション

マップ上のファースト:

 

 

首先我们用nginx作为代理服务器和用户交互,这样用户就只需要在80端口上进行交互就可以了,这样就避免了跨域问题,因为我们都是在80端口上进行交互的;

下面我们看一下利用nginx作为反向代理的具体配置:

server {

        listen      80; #监听80端口,可以改成其他端口

        server_name  localhost; # 当前服务的域名

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {

            proxy_pass http://localhost:81;

            proxy_redirect default;

        }

location /apis { #添加访问目录为/apis的代理配置

rewrite  ^/apis/(.*)$ /$1 break;

proxy_pass  http://localhost:82;

      }

#以下配置省略

1.当用户发送localhost:80/时会被nginx转发到http://localhost:81服务;

2.当界面请求接口数据时,只要以/apis 为开头,就会被nginx转发到后端接口服务器上;

总结:nginx实现跨域的原理,实际就是把web项目和后端接口项目放到一个域中,这样就不存在跨域问题,然后根据请求地址去请求不同服务器(真正干活的服务器);

6. nginx跨域解决方案

おすすめ

転載: www.cnblogs.com/uestc2007/p/12191947.html