国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

純前端解決跨域問題

開發 前端
跨域是由瀏覽器的同源策略引起的,是指頁面請求的url地址,必須與瀏覽器上的url地址處于同域上(即域名,端口,協議相同)。

背景

跨域是由瀏覽器的同源策略引起的,是指頁面請求的url地址,必須與瀏覽器上的url地址處于同域上(即域名,端口,協議相同)。

這是為了防止某域名下的接口被其他域名下的網頁非法調用,是瀏覽器對JavaScript施加的安全限制。

這個措施的出發點是好的,但是程序頁面開發的過程中,卻常常給前端開發者帶來麻煩。

由于前端開發過程中,靜態資源是放在本地電腦上的,訪問這些資源通常通過IP方式(127.0.0.1)或者localhosts來訪問,與線上服務器所在域名不符,不能順利調用服務的端口。

解決跨域問題常用的解決方案有這兩個:

  • JSONP:利用script標簽可跨域的特點,在跨域腳本中可以直接回調當前腳本的函數。
  • CORS:服務器設置HTTP響應頭中Access-Control-Allow-Origin的值,解除跨域限制。

但是這兩個跨域方案都存在一個致命的缺陷,嚴重依賴后端的協助。

開發中遇到的每一個接口都需要提前找后端進行特殊的處理。而且即使后端愿意幫忙,某些接口不是隨便就能開放的(譬如已經在上線正式環境的接口)。

無論如何,依賴后端協助的跨域解決方案都會在一定程度上限制前端開發的進度。

那么有沒有前端獨立就能實現的跨域方案呢?有的,我們可以利用「代理」或「反向代理」技術來實現開發中的跨域問題。

代理與反向代理

代理

代理,也稱正向代理,意思是一個位于客戶端和目標服務器(target server)之間的服務器,為了從目標服務器取得內容,客戶端向代理發送一個請求并指定目標(目標服務器),然后代理向目標服務器轉交請求并將獲得的內容返回給客戶端。

通俗地說:

  • 「客戶端」可以看作一個黑社會大佬,「目標服務器」可以看作一家飯店,「代理服務器」可以看作小弟。
  • 「老大」想吃飯店的醬排骨飯,就讓「小弟」去買,「小弟」跑到「飯店」要個醬排骨飯。
  • 「飯店」醬排骨飯做好,送到「小弟」手上,「小弟」最后再把醬排骨飯拿給「大佬」。

說白了,小弟就是個跑腿的,代理大佬的需求。

數據流程:

  • 數據請求過程:瀏覽器-》代理服務器-》目標服務器
  • 數據返回過程:目標服務器-》代理服務器-》瀏覽器

應用:

最經典的應用就是科學上網:我是一個國內用戶,我訪問不了google,但是我能訪問一個香港的某個代理服務器。

這個香港的代理服務器可以訪問google,于是我先把請求發送到那個代理服務器,告訴他我需要訪問google,代理服務器去取內容,最后返回給我。

就好比,大佬被抓起來坐牢了,不能出去買醬排骨,只好拜托小弟去買回來。

反向代理

百度百科的解釋如下:

反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器。

數據流程:

  • 數據請求過程:瀏覽器-》【反向代理服務器-》處理數據的服務器】
  • 數據返回過程:【處理數據的服務器-》反向代理服務器】-》瀏覽器

通俗地說:

「瀏覽器」可以看作食客,「【反向代理服務器-》處理數據的服務器】」這一個整體可以看作飯店,其中「反向代理服務」相當于點單的服務員。「處理數據的服務器」可以理解為是廚師。

  • 「食客」向來到「飯店」向「服務員」點菜,但服務員并不會真正去做菜,他是下達命令讓「廚師」去做菜。
  • 「廚師」把菜做好了給「服務員」,「服務員」再把菜端給「食客」。

在外部看來,「代理服務器」和「處理數據的服務器」是一個整體。就好比,食客只會去飯店吃飯,而不是去找廚師吃飯(即對于瀏覽器來說,到達反向代理服務器已經完成任務了,后面的操作則由反向代理服務器負責)。

具體飯店怎么操作,對食客是透明的。有可能某個服務員即當服務器也當廚師(即反向代理服務器和處理數據的服務器是同一臺PC機)。

補充一下,沒有反向代理,就好比沒有了服務員,食客直接向廚師要吃的。譬如,你餓了,直接叫媽媽做飯是一樣的(少了下訂單的步驟)

比較

從用途上來講:

  • 正向代理的典型用途是為在防火墻內的局域網客戶端提供訪問Internet的途徑。正向代理還可以使用緩沖特性減少網絡使用率。
  • 反向代理的典型用途是為后端的多臺服務器提供負載平衡,或為后端較慢的服務器提供緩沖服務。

從安全性來講:

  • 正向代理允許客戶端通過它訪問任意網站并且隱藏客戶端自身,因此你必須采取安全措施以確保僅為經過授權的客戶端提供服務。
  • 反向代理對外都是透明的,訪問者并不知道自己訪問的是一個代理。

從使用方來看:

  • 正向代理是瀏覽器端進行配置的,與服務器端無關,甚至可以對服務端隱藏。
  • 反向代理是服務器端配置的,對瀏覽器端是透明的。

利用代理實現跨域

實現原理

對正向代理服務器進行配置,當獲取非接口數據時,讓代理服務器指向開發者本機的資源。當訪問接口時,訪問后端接口數據。

相當于大佬讓小弟把醬排骨飯里面的飯和醬排骨分開買,飯自己家煮,醬排骨才去飯店買。

程序運行過程

  • 瀏覽器訪問頁面,假設訪問淘寶頁面:taobao.com/index.html(假設這個頁面中調用了taobao.com/api/getNew獲取最新商品的接口)
  • taobao.com/index.html請求經過代理服務器,根據配置,index.html頁面請求127.0.0.1:3000
  • 127.0.0.1:3000返回index.html文件給瀏覽器。
  • 瀏覽器運行index.html頁面,發起taobao.com/api/etNew請求。
  • taobao.com/api/getNew請求經過代理服務器,但由于沒有對這個接口進行特殊配置,會正常訪問淘寶服務器中的接口。
  • 淘寶服務器接受到taobao.com/api/getNew請求,檢查請求頭的hosts字段,發現是taobao.com,沒有跨域,將結果返回給代理服務器。
  • 代理服務器拿到結果,返回給瀏覽器,瀏覽器進行解析顯示。

代理配置(以mac下的charles為例)

  • 打開charles的映射關系表【charles->tool->Map Remote】。

純前端解決跨域問題

純前端解決跨域問題

  • 點擊add可以添加映射關系。

純前端解決跨域問題

  • 點擊 ? 符號,可以進入配置規則介紹頁面。

純前端解決跨域問題

注意:

  • 匹配taobao.com/api/ 的配置項要放在匹配taobao.com/ 的配置項前,讓匹配API的優先級更高。否則將只匹配到taobao.com/*的配置。
  • 如果接口請求中,有涉及到https協議的,需要提前在電腦上安裝charles的證書 。
  • chrome系瀏覽器的請求是不經過charles代理的,這時需要設置電腦上的網絡設置,設置代理地址為charles。

純前端解決跨域問題

  • 微信開發者工具是不走系統代理的,需要額外設置。【微信開發者工具-》設置-》代理-》指向代理服務器】

純前端解決跨域問題

利用反向代理實現跨域

反向代理需要用到nginx,其詳細介紹請看 http://www.nginx.cn/doc/http://www.nginx.cn/doc/

實現原理

原理大體相同,但是處理的端不同,反向代理實在服務器端進行處理。首先修改hosts文件,將域名指向開發者的電腦本身,

把自己偽裝成服務端,再通過nginx對不同的請求進行轉發,把靜態資源指向開發者本地電腦的資源,將接口指向實際的服務器。

相當于把飯店設置在了黑社會的樓下,去樓下買醬排骨飯的時候,飯店飯自己做,醬排骨則偷偷跑去別的飯店買。

代理配置

  • 設置hosts文件,將目標域名指向本機。

純前端解決跨域問題

  • 編輯nginx配置,對不同的資源請求,指向到對應地址。同樣的,將靜態資源指向本機服務,將接口指向真正的服務器。

純前端解決跨域問題

程序運行過程

  • 瀏覽器訪問頁面,假設訪問淘寶頁面:taobao.com/index.html
  • taobao.com域名解析先經過hosts文件配置,發現taobao.com域名指向127.0.0.1,則向本機發起請求。
  • nginx接收到taobao.com/index.html請求,根據nginx的配置,將把這個請求轉發給127.0.0.1:3000。
  • 瀏覽器拿到index.html文件,發起taobao.com/api/getNew請求
  • nginx接收到taobao.com/api/getNew請求請求,根據nginx的配置,將把這個請求轉發給真正的淘寶服務器中。
  • 淘寶服務器將數據返回給nginx,再返回給瀏覽器執行。

簡單的對比

  • 使用charles等正向代理方式比較簡單,需要掌握的知識點也比較少。但同時其可配置性較弱,更適合小型項目使用。
  • 使用nginx的反向代理則相對復雜一些,需要了解基本的nginx配置。但其可配置性較強,支持URL的正則匹配,設置優先級等,適合復雜的項目使用
責任編輯:未麗燕 來源: SegmentFault
相關推薦

2021-06-06 13:05:15

前端跨域CORS

2024-10-29 16:41:24

SpringBoot跨域Java

2016-11-01 21:51:03

phpjavascript

2009-02-18 09:30:10

AJAX跨域XML

2024-12-02 14:30:20

2024-02-27 08:14:51

Nginx跨域服務

2012-03-27 15:23:15

JSONPAJAX

2022-09-07 07:05:25

跨域問題安全架構

2009-05-21 14:47:38

WEB開發JsonAjax

2016-11-04 20:02:37

Apache

2022-02-22 11:54:05

跨域項目前后端

2022-03-11 10:01:47

開發跨域技術

2017-05-25 09:45:35

2023-02-15 07:03:41

跨域問題面試安全

2010-07-30 12:40:00

Flex跨域訪問

2023-04-07 10:51:39

2010-02-24 10:55:01

WCF跨域訪問

2021-04-27 15:20:41

人工智能機器學習技術

2025-03-05 11:00:00

JavaScript跨域前端

2018-11-26 14:52:12

Web前端跨域
點贊
收藏

51CTO技術棧公眾號

欧美精品九九久久| 日韩av最新在线观看| 久久久精品国产一区二区三区| 日韩精品一区二区三区中文在线| 一本久久精品一区二区 | 69av成人| 欧美日韩成人激情| 手机看片福利在线观看| 亚洲精品视频在线观看网站| www.99在线| 91免费在线看| 欧美视频免费看欧美视频| 美腿丝袜亚洲综合| 日韩欧美一区二区视频在线播放| 国产精品草草| 成人信息集中地欧美| 奇米影视777在线欧美电影观看| 中文字幕最新精品| 蜜桃视频成人m3u8| 日韩第一页在线| 成人影院在线播放| 欧美精品一区二区三区在线播放| 国产黄a三级三级三级av在线看| 欧美狂野另类xxxxoooo| 日本三级视频在线播放| 欧美日韩大陆一区二区| www黄在线观看| 欧美在线免费视屏| 大片免费播放在线视频| 欧美影院午夜播放| 99福利在线| 欧美精品一区二区三区一线天视频| 在线三级中文| 日韩精品视频在线观看网址| 欧美日韩在线精品一区二区三区激情综合| 亚洲最新av在线网站| 男人亚洲天堂| 日本国产高清不卡| 亚洲精品在线观看91| av一区二区三区四区电影| 亚洲视频中文| 亚洲三区在线观看| 国产精一品亚洲二区在线视频| www.com毛片| 亚洲免费在线观看视频| 久久视频www| 精品国产123| 国产精品xnxxcom| 国产成人精品免费视频| 国产精品啊v在线| 精品一区二区成人免费视频| 久久综合久久综合久久综合| 无限国产资源| 91精品国产91久久久久久一区二区 | av最新在线| 色吧影院999| 九九视频免费观看视频精品| 99re在线| 国产成人免费在线视频| 天天影视综合色| 日韩欧美在线一区| 在线视频超级| 欧美中文字幕精品| 国产婷婷精品| 国产 福利 在线| 日韩欧美有码在线| 色综合桃花网| 国产91精品青草社区| 亚洲福利专区| 欧美日韩国产精品激情在线播放| 精品久久久视频| 一个人www视频在线免费观看| 91精品国产高清久久久久久91| 一区二区三区精品视频在线观看| 欧美a在线视频| 欧美日韩亚洲丝袜制服| 亚洲一区导航| 国产精品香蕉视屏| 99re6这里只有精品视频在线观看| 亚洲网友自拍| 俺也去精品视频在线观看| 天天做天天爱天天综合网2021| 欧美人与性禽动交精品| 一区二区三区视频播放| 国产精品v欧美精品∨日韩| 成人免费高清在线| 夜色资源站国产www在线视频| 亚洲国产欧美一区| 精品72久久久久中文字幕| 中文字幕日韩一区二区三区不卡| 亚洲综合无码一区二区| 欧美黑人疯狂性受xxxxx野外| 成人在线免费观看视视频| 成人黄色网址在线观看| 国产主播福利在线| 97国产在线视频| 看片的网站亚洲| 最美情侣韩剧在线播放| 久久影院中文字幕| 老司机一区二区三区| 人与动性xxxxx免费视频| 中文字幕亚洲精品| 丝袜美腿一区二区三区| 最新精品视频在线| 美女精品久久久| 美腿丝袜亚洲一区| 97在线观看视频国产| 久久先锋资源| 欧美日韩激情视频在线观看| 色欧美日韩亚洲| 黑人巨大精品| 亚洲第一级黄色片| 日韩激情精品| 91九色丨porny丨国产jk| 色狠狠桃花综合| 日韩影视在线观看| 久久精品ww人人做人人爽| 久久精品九九| 8848hh四虎| 777精品视频| 99久久亚洲精品蜜臀| 亚洲精品成人a8198a| 久久久国产精品午夜一区ai换脸| 少妇**av毛片在线看| 国产婷婷色综合av蜜臀av| 国产精品老牛| 91午夜在线观看| 亚洲成人亚洲激情| 亚欧美中日韩视频| 中文日本在线观看| αv一区二区三区| 日韩欧美有码在线| 日韩久久久久| 一级视频在线观看| 成人久久18免费网站图片| 一区二区日韩电影| 在线播放一区二区精品视频| 国产精品va在线观看无码| 精品亚洲男同gayvideo网站| 亚洲视频免费| 在线播放国产区| 欧美极品少妇xxxxⅹ裸体艺术| 日韩伦理福利| 在线天堂av| 国产最新精品视频| 国产老妇另类xxxxx| 97影院秋霞午夜在线观看| 国产日韩精品在线观看| 亚洲区第一页| 亚洲综合五月天| 亚洲女同一区| 亚洲国产一二三精品无码 | 免费高清完整在线观看| 男人添女人荫蒂免费视频| 欧美日韩专区在线| 999国产精品永久免费视频app| 黄页网站在线观看| 国产精品久久一区主播| 中文字幕亚洲一区二区av在线| 先锋影音网一区二区| 欧美又粗又长又爽做受| 91精品国产自产在线丝袜啪| 亚洲色欲久久久综合网东京热| 亚洲精品国精品久久99热| 国产美女一区| 欧美momandson| 国产九九九九九| 久久色在线播放| 国产精品福利一区二区三区| 欧美成人午夜77777| 一级黄色av| 99re6热在线精品视频播放速度| 在线视频一区二区免费| 在线日本高清免费不卡| 国产亚洲一区二区手机在线观看| 免费网站永久免费观看| 久久精品人人做人人爽| 中文字幕亚洲一区二区av在线| 尤物tv在线精品| av片在线观看免费| 免费一级淫片aaa片毛片a级| 不卡毛片在线看| 亚洲欧美国产三级| 嫩草成人www欧美| 羞羞影院欧美| 在线免费视频a| 成人精品视频在线| 欧美高清精品3d| 久久久久久久久免费| 日韩欧美视频专区| 2024短剧网剧在线观看| 日韩久久久久久久久久久久| 欧美乱人伦中文字幕在线| 亚洲午夜精品久久久久久久久| 亚洲国产日韩在线| 开心久久婷婷综合中文字幕 | 亚洲精品tv久久久久久久久久| 91在线网址| 污污动漫在线观看| 国产一区二区三区黄|