摘要:想看重點的直接挪到文章底部,反向代理的配置跨域涉及到前后端開發(fā)的項目中,不可避免的涉及到了跨域的問題。瀏覽器的同源策略會導致跨域,這里同源策略又分為以下兩種同源策略禁止對不同源頁面進行操作。同源策略禁止使用對象向不同源的服務器地址發(fā)起請求。
想看重點的直接挪到文章底部,nginx反向代理的配置
跨域涉及到前后端開發(fā)的項目中,不可避免的涉及到了跨域的問題。跨域,指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。
瀏覽器的同源策略會導致跨域,這里同源策略又分為以下兩種 DOM同源策略:禁止對不同源頁面DOM進行操作。這里主要場景是iframe跨域的情況,不同域名的iframe是限制互相訪問的。 XmlHttpRequest同源策略:禁止使用XHR對象向不同源的服務器地址發(fā)起HTTP請求。 只要協(xié)議、域名、端口有任何一個不同,都被當作是不同的域,之間的請求就是跨域操作。 所謂同源是指,域名,協(xié)議,端口均相同,不明白沒關系,舉個栗子: http://www.123.com/test.html 調(diào)用 http://www.123.com/test.php (非跨域) http://www.123.com/test.html 調(diào)用 http://www.456.com/test.php (主域名不 同:123/456,跨域) http://abc.123.com/test.html 調(diào)用 http://def.123.com/test.php (子域名不同:abc/def,跨域) http://www.123.com:8080/test.html 調(diào)用 http://www.123.com:8081/test.php (端口不同:8080/8081,跨域) http://www.123.com/test.html 調(diào)用 https://www.123.com/test.php (協(xié)議不同:http/https,跨域) 請注意:localhost和127.0.0.1雖然都指向本機,但也屬于跨域。 瀏覽器執(zhí)行javascript腳本時,會檢查這個腳本屬于哪個頁面,如果不是同源頁面,就不會被執(zhí)行。解決跨域的辦法
1.jsonp
使用方式就不贅述了,基本原理就是通過動態(tài)創(chuàng)建script標簽,然后利用src屬性進行跨域,但是要注意JSONP只支持GET請求,不支持POST請求。
2.CORS(跨域資源共享)
利用nginx或者php、java等后端語言設置允許跨域請求 header("Access-Control-Allow-Origin:*");//允許所有來源訪問 header("Access-Control-Allow-Method:POST,GET");//允許訪問的方式 今天不作重點介紹
3.服務器代理
瀏覽器有跨域限制,但是服務器不存在跨域問題,所以可以由服務器請求所要域的資源再返回給客戶端。
4.其他
利用Nginx反向代理解決跨域問題今天介紹的重點,直接上代碼
這是本地的開發(fā)環(huán)境nginx的配置 http { client_max_body_size 1024m; include mime.types; default_type application/octet-stream; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 8081; #自身監(jiān)聽8081端口 server_name first; location /apis/xos { #當匹配到/apis/xos 地址是時訪問 http://172.99.99.99:31004/ proxy_pass http://172.99.99.99:31004/; } location /apis/rds { #當匹配到/apis/rds 地址是時訪問 http://172.88.88.88:20152 proxy_pass http://172.88.88.88:20152/; } location /apis { #當匹配到/apis 地址是時訪問 http://172.88.88.88:31002/,一個api地址 proxy_pass http://172.88.88.88:31002/; } location / { proxy_pass http://127.0.0.1:8080; #匹配不到其他地址默認匹配的地址是訪問 8080端口,本地node start啟動的服務 } } }
服務端的配置大體一樣
server { listen 80; server_name localhost; location / { root html; #HTML5 History 模式 nginx的配置 try_files $uri $uri/ /index.html; } location /apis/xos { proxy_pass http://172.88.88.88:31004/; } location /apis/rds { proxy_pass http://172.99.99.99:20152/; } location /apis/ { proxy_pass http://172.77.77.77:31002/; } location /index.html { #不允許緩存 add_header Cache-Control " no-store"; } }
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/39730.html
摘要:想看重點的直接挪到文章底部,反向代理的配置跨域涉及到前后端開發(fā)的項目中,不可避免的涉及到了跨域的問題。瀏覽器的同源策略會導致跨域,這里同源策略又分為以下兩種同源策略禁止對不同源頁面進行操作。同源策略禁止使用對象向不同源的服務器地址發(fā)起請求。 想看重點的直接挪到文章底部,nginx反向代理的配置 跨域 涉及到前后端開發(fā)的項目中,不可避免的涉及到了跨域的問題。跨域,指的是瀏覽器不能執(zhí)行其他...
摘要:例如和,這兩個域名的二級域名就是相同的代碼實現(xiàn)基于添加通過二級域名共享添加通過二級域名共享關閉瀏覽器時刪除代表關閉瀏覽器刪除負數(shù)則關閉瀏覽器失效沒有刪除參數(shù)介紹需要設置的二級域名至少是二級域名,可以是三級域名四級域名設置可以訪問的路徑。 背景 最近在做sso單點登錄,sso登錄成功后后端需要把token和用戶信息以cookie的方式傳送給前端,由于項目是前后端分離的,這就涉及到了前后端...
摘要:更新嘗試了一下實現(xiàn)前后端分離,新的文章如下前后端分離之初試更新可另外用實現(xiàn)前后端分離,這篇文章可能局限性太大,只是個人的入門實踐剛剛學習前端快一年,后臺方面了解甚少,于是決定踩踩坑,學習一下。 2018.9.6更新:嘗試了一下REST framework實現(xiàn)前后端分離,新的文章如下Django前后端分離之REST framework初試 2018.8.27更新:可另外用 restful...
閱讀 2429·2021-09-01 10:41
閱讀 1450·2019-08-30 14:12
閱讀 517·2019-08-29 12:32
閱讀 2865·2019-08-29 12:25
閱讀 2939·2019-08-28 18:30
閱讀 1711·2019-08-26 11:47
閱讀 985·2019-08-26 10:35
閱讀 2594·2019-08-23 18:06