最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Angular4開發(fā)解決跨域問題詳解

 更新時間:2017年08月28日 16:50:21   作者:THE_ONE  
本篇文章主要介紹了Angular4開發(fā)解決跨域問題詳解。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1.跨域

瀏覽器對于javascript的同源策略的限制,例如a.cn下面的js不能調(diào)用b.cn中的js,對象或數(shù)據(jù)(因為a.cn和b.cn是不同域),所以跨域就出現(xiàn)了.

上面提到的,同域的概念又是什么呢??? 簡單的解釋就是相同域名,端口相同,協(xié)議相同

同源策略:

請求的url地址,必須與瀏覽器上的url地址處于同域上,也就是域名,端口,協(xié)議相同.

比如:我在本地上的域名是study.cn,請求另外一個域名一段數(shù)據(jù),這個時候在瀏覽器上會報錯,這個就是同源策略的保護(hù),如果瀏覽器對javascript沒有同源策略的保護(hù),那么一些重要的機密網(wǎng)站將會很危險~

2.反向代理

反向代理(Reverse Proxy)方式是指以代理服務(wù)器來接受internet上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請求連接的客戶端,此時代理服務(wù)器對外就表現(xiàn)為一個反向代理服務(wù)器。

3.Angular4跨域

Angular4項目分為工程代碼和生產(chǎn)代碼,在本地調(diào)試一般都是工程代碼,這樣聯(lián)調(diào)接口的話,每次寫一個接口都要丟到服務(wù)器上測試,嚴(yán)重影響效率,所以我們需要做的就是能在工程項目上聯(lián)調(diào)接口,隨時能看到效果,但是后端代碼不是部署在本機的話就會有跨域問題,于是我們便需要去著重去解決跨域問題!這樣后端代碼隨時改,前端也可以隨時更改看到效果,實現(xiàn)真正的前后端分離!
對于Angular4解決跨域問題,應(yīng)該是開發(fā)者已經(jīng)想到這個問題,所以解決這個問題很簡單!那就是反向代理!!

下面介紹反向代理的方法:

1.首先需要建立一個JSON文件,文件名”proxy.config.json”

{
 "/api":{
  "target":"http://106.15.179.92"
 }
}

http://106.15.179.92:為你連接機器的ip地址,或者你所需要請求的接口域名,這個就是需要被代理的

/api是代理的名稱,一般都是接口請求的ip地址后面的第一個參數(shù)名

比如:http://106.15.179.92/api/fron...為一個登錄的接口,反向代理后寫接口請求的時候只需要寫

this.$http.post(`/api/front/frontUserController/login.do`,data)
   .then(res=>{
       Console.log(res);
})

因為http://106.15.179.92已經(jīng)被代理到/api上!

2.然后配置”package.json”文件

"scripts": {
 "ng": "ng",
 "start": "ng serve --proxy-config proxy.config.json",
 "build": "ng build --prod --aot",
 "test": "ng test",
 "lint": "ng lint",
 "e2e": "ng e2e"
}

4.甩鍋解決跨域

跨域?和我們前端有關(guān)系?有嗎?沒有吧!我不解決,我就不解決,你們后端去解決!

現(xiàn)在介紹一種對于任何項目都通用的解決跨域的方法!

用nginx反向代理實現(xiàn)跨域,是最簡單的跨域方式。只需要修改nginx的配置即可解決跨域問題,支持所有瀏覽器,支持session,不需要修改任何代碼,并且不會影響服務(wù)器性能。

我們只需要配置nginx,在一個服務(wù)器上配置多個前綴來轉(zhuǎn)發(fā)http/https請求到多個真實的服務(wù)器即可。這樣,這個服務(wù)器上所有url都是相同的域名、協(xié)議和端口。因此,對于瀏覽器來說,這些url都是同源的,沒有跨域限制。而實際上,這些url實際上由物理服務(wù)器提供服務(wù)。這些服務(wù)器內(nèi)的javascript可以跨域調(diào)用所有這些服務(wù)器上的url。

下面,給出一個nginx支持跨域的例子,進(jìn)行具體說明。

如,我們有兩個pythonflask開發(fā)的項目:testFlask1和testFlask2。

testFlask2項目上的javascript腳本要通過ajax方式調(diào)用testFlask1的一個url,獲取一些數(shù)據(jù)。

正常情況下部署,就會有跨域問題,瀏覽器拒絕執(zhí)行如下這樣的調(diào)用。

$("button").click(function () {
  $.get("127.0.0.1:8081/partners/json", function (result) {
    $("div").html(result);
  });
});

下面把testFlask2項目的javascrip文件修改一下。這樣訪問同源的url,就不會有跨域問題。

$("button").click(function () {
  $.get("partners/json", function (result) {
    $("div").html(result);
  });
});

但是,我們testFlask2項目實際上沒有partners/json這樣的url,那怎么處理呢?

我們這樣編寫nginx的配置文件:

server{
 listen8000;
 location/ {
  includeuwsgi_params;
  uwsgi_passunix:/tmp/testFlask2.sock;
 }
 location/partners {
  rewrite^.+partners/?(.*)$ /$1 break;
  includeuwsgi_params;
  uwsgi_passunix:/tmp/testFlask1.sock;
 }
}

我們把testFlask2項目部署在8080端口的根目錄下。把提供web服務(wù)的testFlask1項目部署在/partners目錄下。

但我們的testFlask1項目并不能處理/partners/json這樣的url請求。那怎么辦呢?

通過rewrite^.+partners/?(.)$ /$1 break; 這一條命令,nginx可以把收到的/partners/請求全部轉(zhuǎn)為/*請求后再轉(zhuǎn)發(fā)給背后的真實web服務(wù)器。

這樣,RESTFUL的ajax客戶端程序,只需要給出特定前綴的url就可以調(diào)用任意服務(wù)器提供的RESTFUL接口了。

甚至,通過nginx的反向代理,我們還能調(diào)用其他公司開發(fā)的網(wǎng)站提供的RESTFUL接口。

如,

location/sohu {
 rewrite^.+sohu/?(.*)$ /$1 break;
 includeuwsgi_params;
 proxy_passhttp://www.sohu.com/;
}

我們就把sohu網(wǎng)站整個搬到我們的8080:/sohu/目錄下了,我們的javascript就可以盡情調(diào)用其RESTFUL服務(wù)了。

順便說一下,rewrite^.+sohu/?(.)$ /$1 break; 這句命令中,$1表示(.)這個部分。第一對()內(nèi)的參數(shù)是$1,第二對()內(nèi)的參數(shù)就是$2,以此類推。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解AngularJS跨頁面?zhèn)髦担╱i-router)

    詳解AngularJS跨頁面?zhèn)髦担╱i-router)

    本篇文章主要介紹了詳解AngularJS跨頁面?zhèn)髦担╱i-router),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • angular.js+node.js實現(xiàn)下載圖片處理詳解

    angular.js+node.js實現(xiàn)下載圖片處理詳解

    這篇文章主要介紹了angular.js+node.js實現(xiàn)下載圖片處理的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • Angular4.x通過路由守衛(wèi)進(jìn)行路由重定向?qū)崿F(xiàn)根據(jù)條件跳轉(zhuǎn)到相應(yīng)的頁面(推薦)

    Angular4.x通過路由守衛(wèi)進(jìn)行路由重定向?qū)崿F(xiàn)根據(jù)條件跳轉(zhuǎn)到相應(yīng)的頁面(推薦)

    這篇文章主要介紹了Angular4.x通過路由守衛(wèi)進(jìn)行路由重定向,實現(xiàn)根據(jù)條件跳轉(zhuǎn)到相應(yīng)的頁面,這個功能在網(wǎng)上商城項目上經(jīng)常會用到,下面小編給大家?guī)砹私鉀Q方法一起看看吧
    2018-05-05
  • angular2中使用第三方j(luò)s庫的實例

    angular2中使用第三方j(luò)s庫的實例

    下面小編就為大家分享一篇angular2中使用第三方j(luò)s庫的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • 對Angular.js Controller如何進(jìn)行單元測試

    對Angular.js Controller如何進(jìn)行單元測試

    這篇文章主要給大家介紹了如何對Angular Controller進(jìn)行單頁測試。如果你不太了解angular也沒關(guān)系,本文也會提及關(guān)于Angular的一些知識。文中通過示例代碼介紹的很詳細(xì),詳細(xì)對大家的理解和學(xué)習(xí)很有幫助,下面來一起看看吧。
    2016-10-10
  • AngularJs 國際化(I18n/L10n)詳解

    AngularJs 國際化(I18n/L10n)詳解

    本文主要介紹AngularJs 國際化的知識,這里整理了詳細(xì)的資料來講解國際化,有需要的小伙伴可以參考下
    2016-09-09
  • 在 Angular 中使用懶加載路由的方法

    在 Angular 中使用懶加載路由的方法

    延遲加載是一種限制加載用戶當(dāng)前需要的模塊的方法,這可以提高應(yīng)用程序的性能并減小初始捆綁包大小,在本文中,您學(xué)習(xí)了如何在 Angular 應(yīng)用程序中使用惰性加載路由,本文分步驟講解的非常詳細(xì),感興趣的朋友一起看看吧
    2024-02-02
  • AngularJS基礎(chǔ)知識

    AngularJS基礎(chǔ)知識

    這篇文章主要介紹了AngularJS基礎(chǔ)知識,包括AngularJS定義和特點以及構(gòu)建AngularJS應(yīng)用的方法,推薦給大家。
    2014-12-12
  • Angular2 父子組件數(shù)據(jù)通信實例

    Angular2 父子組件數(shù)據(jù)通信實例

    這篇文章主要介紹了Angular2 父子組件數(shù)據(jù)通信實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • AngularJS入門教程之 XMLHttpRequest實例講解

    AngularJS入門教程之 XMLHttpRequest實例講解

    本文主要講解 AngularJS XMLHttpRequest,這里給大家整理相關(guān)資料并提供實例代碼,有需要的小伙伴參考下
    2016-07-07

最新評論

隆回县| 博客| 遂溪县| 鹰潭市| 林州市| 上杭县| 宿州市| 霍邱县| 集安市| 藁城市| 边坝县| 云龙县| 万盛区| 颍上县| 旬邑县| 永新县| 横山县| 濮阳市| 白山市| 蒙山县| 哈尔滨市| 定州市| 云南省| 大余县| 波密县| 涞水县| 虹口区| 高要市| 嘉黎县| 沁水县| 宁波市| 米易县| 伽师县| 饶河县| 宁都县| 砀山县| 宁阳县| 康乐县| 台南县| 塘沽区| 宁陕县|