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

nginx 解決跨域問題嵌入第三方頁面

 更新時(shí)間:2021年08月17日 08:37:41   作者:安逸的咸魚  
本文主要介紹了nginx 解決跨域問題嵌入第三方頁面,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前言

我們自己的系統(tǒng)需要加載第三方系統(tǒng)中的一部分組件。計(jì)劃的是第三方開發(fā)、提供相關(guān)接口,我們通過接口獲取到數(shù)據(jù),然后,再用這些數(shù)據(jù)在我們系統(tǒng)中吧相關(guān)的功能實(shí)現(xiàn)了

可惜的是,領(lǐng)導(dǎo)沒有協(xié)調(diào)下來。正規(guī)的途徑搞不定,那就需要花式整活了

前面也說了,我們走接口拉數(shù)據(jù)重新渲染,這樣的玩法是比較常規(guī)的,缺點(diǎn)是需要重新去實(shí)現(xiàn)相關(guān)模塊,還需要對(duì)方開放接口。

現(xiàn)在只能走非正常渠道,比如,容易想到的,就是 我們直接把頁面嵌入到自己的系統(tǒng),同時(shí)需要對(duì)第三方頁面的樣式,組件進(jìn)行控制

困難

上面提到的方法,就是在我們自己的系統(tǒng)里,規(guī)劃一個(gè) iframe,通過 src 屬性引入第三方的系統(tǒng)。
這里一個(gè)最大的問題,就是跨域。網(wǎng)絡(luò)上提到的最有可能解決的方案,通過 postMessage跨域,可惜,這個(gè)還是需要第三方配合

跨域定義

首先狹義的同源就是指,域名、協(xié)議、端口均為相同。
跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScript實(shí)施的安全限制。

nginx 的特性

反向代理

配置一個(gè) url,用戶如果訪問這個(gè) url ,就能給代理到真實(shí)需要的 url

動(dòng)靜分離

正如字面的意思,動(dòng)態(tài)的資源(需要服務(wù)器進(jìn)行計(jì)算)和靜態(tài)的資源(一般是指 html,css,js,img等靜態(tài)頁面的相關(guān)資源)分離開來

嘗試實(shí)現(xiàn)

因?yàn)槲覀兊?A 應(yīng)用使用了 80 端口,第三方的 B 系統(tǒng)也使用了 80 端口,那就需要加后綴來區(qū)分代理到 B 系統(tǒng),大致的 url 如下

# A 的 url
http://localhost/
# B 加后綴的 url
http://localhost/three-part
# B 的實(shí)際 url
http://172.16.1.1/

我們正常訪問 localhost 會(huì)到 A 系統(tǒng)的首頁,訪問 172.16.1.1 會(huì)訪問 B 的首頁,如果通過代理的 URL 去訪問,nginx 實(shí)際上會(huì)給代理到 172.16.1.1/three-part,沒錯(cuò),測(cè)試的時(shí)候,發(fā)現(xiàn)吧后綴給帶過去了?? 不排除我不專業(yè),沒配置到位,但我測(cè)試的效果就是這樣

上述配置的思路,就是讓兩個(gè)應(yīng)用同 ip 同端口,然后 A 應(yīng)用里 iframe 加載了 B 的首頁,那就能通過 js 去操作

很遺憾,那就只有配置成不同的端口了,比如給 B 應(yīng)用的代理 url 配置為 localhost:81/,這樣一來,無法在 A 應(yīng)用的 iframe 對(duì)應(yīng)的頁面里,編寫對(duì) B 應(yīng)用修改的 js 了

最終效果

隨著我對(duì) B 應(yīng)用的 f12,我發(fā)現(xiàn),他們封裝了一個(gè) x.min.js ,這個(gè)文件登陸的時(shí)候會(huì)加載,進(jìn)入首頁后也會(huì)加載。
那么,騷操作就來了,我直接重寫他們的這個(gè) js 文件,吧我需要的邏輯安排在文件的最后面,然后,讓頁面在加載這個(gè) x.min.js 的時(shí)候,去加載我服務(wù)器端修改過后的 js 文件,而不是去加載第三方服務(wù)器里的 x.min.js

整個(gè)流程的示意圖如下示:

下面就是我配置好正在用的nginx配置

upstream mir{
    server 10.1.128.58:80;
}
server {
 listen     localhost:8001; # nginx 需要監(jiān)聽的 url及對(duì)應(yīng)的端口
 location =/static/mir.min.js {
  root C:/r9/bin/resources;
 }
 location / {
  # 可以理解為這里用了一個(gè) url 的變量名,這個(gè)變量名定義在 upstream 中
  proxy_pass http://mir;
  # 下面幾項(xiàng)算是跨域標(biāo)配,直接抄上就行
  proxy_set_header Host $http_host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Fonwarded-For $proxy_add_x_forwarded_for;
  if ($request_method = 'OPTIONS') {
   return 204;
  }
 }
 # 靜態(tài)資源放行
 location ~ \.(gif|jpg|jpeg|css|js|svg)$ {
  proxy_pass http://mir;
  proxy_set_header Host $http_host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Fonwarded-For $proxy_add_x_forwarded_for;
  expires 30d;
 }
 # 添加跨域請(qǐng)求頭
 add_header 'Access-Control-Allow-Origin' '*';
 add_header 'Access-Control-Allow_Credentials' 'true';
 add_header 'Access-Control-Allow-Headers' 'Authorization,Accept,Origin,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';
 add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS,PUT,DELETE,PATCH';
 #error_page  404              /404.html;

 # redirect server error pages to the static page /50x.html
 # 配置常規(guī)的友好錯(cuò)誤提示頁
 error_page   500 502 503 504  /50x.html;
 location = /50x.html {
  root   html;
 }

}

nginx 里的 url 匹配,有一個(gè)特點(diǎn),就是最先匹配原則,每一個(gè)請(qǐng)求,從上往下,先匹配到哪一個(gè)規(guī)則,就直接跳轉(zhuǎn)這個(gè)規(guī)則對(duì)應(yīng)配置的 url

題外話

因?yàn)榈谌降南到y(tǒng),其實(shí)算是一個(gè)常規(guī)的系統(tǒng),比如,標(biāo)配有登陸頁,我們需要吞掉登陸的這個(gè)步驟,所以,我們需要在動(dòng)手腳的 x.min.js 里檢測(cè)第三方系統(tǒng)正確加載后,是否需要進(jìn)行登陸操作,同時(shí)為了友好起見,我們需要添加一個(gè)遮罩層,在我們對(duì)第三方的頁面處理干凈之前,得先遮住不讓客戶看到。
等正確載入第三方的系統(tǒng)后,就可以按需要進(jìn)行功能裁剪,樣式替換

到此這篇關(guān)于nginx 解決跨域問題嵌入第三方頁面的文章就介紹到這了,更多相關(guān)nginx 跨域嵌入第三方頁面內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • nginx限制IP惡意調(diào)用短信接口處理方法

    nginx限制IP惡意調(diào)用短信接口處理方法

    這篇文章主要介紹了nginx限制IP惡意調(diào)用短信接口處理方法,一種是nginx黑名單方式,另一種是限制IP請(qǐng)求數(shù)。需要的朋友可以參考下
    2018-06-06
  • nginx上傳文件大小報(bào)錯(cuò)500的解決辦法

    nginx上傳文件大小報(bào)錯(cuò)500的解決辦法

    這篇文章主要介紹了nginx上傳文件大小報(bào)錯(cuò)解決辦法的相關(guān)資料,小文件可以提交,大文件會(huì)報(bào)500內(nèi)部錯(cuò)誤,這里提供解決辦法,需要的朋友可以參考下
    2017-08-08
  • nginx中keepalive配置詳解

    nginx中keepalive配置詳解

    keepalive是長連接的意思,本文主要介紹了nginx中keepalive配置詳解,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • Nginx構(gòu)建Tomcat集群的操作方法

    Nginx構(gòu)建Tomcat集群的操作方法

    nginx是一款自由的、開源的、高性能的HTTP服務(wù)器和反向代理服務(wù)器;同時(shí)也是一個(gè)IMAP、POP3、SMTP代理服務(wù)器,這篇文章主要介紹了Nginx構(gòu)建Tomcat集群的問題,需要的朋友可以參考下
    2022-01-01
  • nginx+lua+redis實(shí)現(xiàn)降級(jí)的示例代碼

    nginx+lua+redis實(shí)現(xiàn)降級(jí)的示例代碼

    隨著用戶訪問量的激增,網(wǎng)站或電商平臺(tái)可能會(huì)面臨系統(tǒng)超負(fù)載的問題,導(dǎo)致注冊(cè)、下單、支付等功能出現(xiàn)問題,為保障核心服務(wù)的高可用性,可以采用降級(jí)策略,本文就來介紹一下nginx+lua+redis降級(jí),感興趣的可以了解學(xué)習(xí)
    2024-10-10
  • Nginx?中的地址重寫功能(使用方法)

    Nginx?中的地址重寫功能(使用方法)

    Nginx?地址重寫(rewrite)是?Nginx?服務(wù)器中一個(gè)非常實(shí)用的功能,它可以幫助我們實(shí)現(xiàn)?URL?的重定向、隱藏真實(shí)文件路徑、優(yōu)化網(wǎng)站結(jié)構(gòu)等,本文將詳細(xì)介紹?Nginx?地址重寫的相關(guān)知識(shí)和使用方法,感興趣的朋友一起看看吧
    2024-01-01
  • Nginx實(shí)現(xiàn)動(dòng)態(tài)攔截非法訪問ip的方法

    Nginx實(shí)現(xiàn)動(dòng)態(tài)攔截非法訪問ip的方法

    最近在訪問時(shí)不時(shí)會(huì)被暴力刷量,爬蟲和惡意攻擊導(dǎo)致數(shù)據(jù)庫,服務(wù)等癱瘓,所以本文介紹了在Nginx上實(shí)現(xiàn)一個(gè)動(dòng)態(tài)攔截IP的方法,具體是當(dāng)某個(gè)IP在1分鐘內(nèi)訪問超過60次時(shí),將其加入Redis并攔截,攔截時(shí)間默認(rèn)1天,需要的朋友可以參考下
    2025-02-02
  • Nginx動(dòng)靜分離實(shí)現(xiàn)案例代碼解析

    Nginx動(dòng)靜分離實(shí)現(xiàn)案例代碼解析

    這篇文章主要介紹了Nginx動(dòng)靜分離實(shí)現(xiàn)案例代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Centos系統(tǒng)中如何在指定位置下安裝Nginx

    Centos系統(tǒng)中如何在指定位置下安裝Nginx

    這篇文章主要介紹了Centos系統(tǒng)中如何在指定位置下安裝Nginx,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Nginx服務(wù)器中配置404錯(cuò)誤頁面時(shí)一些值得注意的地方

    Nginx服務(wù)器中配置404錯(cuò)誤頁面時(shí)一些值得注意的地方

    這篇文章主要介紹了Nginx服務(wù)器中配置404錯(cuò)誤頁面時(shí)一些值得注意的地方,包括隱藏Nginx出錯(cuò)頁面及Header上的版本號(hào)的安全方法,需要的朋友可以參考下
    2016-01-01

最新評(píng)論

永福县| 凤冈县| 舟曲县| 夏邑县| 读书| 深州市| 林甸县| 高邑县| 漳平市| 武冈市| 当阳市| 禹州市| 基隆市| 新蔡县| 固阳县| 尉氏县| 中江县| 静乐县| 宁德市| 盐山县| 西昌市| 波密县| 芜湖县| 弥勒县| 桐乡市| 芜湖县| 珠海市| 宁远县| 通化县| 霍林郭勒市| 米林县| 冕宁县| 改则县| 滦平县| 沽源县| 马公市| 左云县| 金寨县| 修文县| 兴仁县| 大同市|