国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Nginx反向代理理解誤區(qū)之proxy_cookie_domain

岳光 / 1605人閱讀

摘要:但是對(duì)于一些設(shè)置了的項(xiàng)目,比如這種情況下當(dāng)你用做反向代理的時(shí)候,就必須要轉(zhuǎn)換一下了。多學(xué)習(xí),多去關(guān)注一些底層的原理,才會(huì)發(fā)現(xiàn)自己理解的錯(cuò)誤,望諸君共勉如果錯(cuò)誤,歡迎指出

基本內(nèi)容

Nginx做反向代理的時(shí)候,我們一般習(xí)慣添加proxy_cookie_domain配置,來(lái)做cookie的域名轉(zhuǎn)換,比如

...
location /api {
   proxy_pass https://b.test.com;
   proxy_cookie_domain b.test.com  a.test.com;
}       
...

在之前的博客中我也是這么寫(xiě)的,但是最近在項(xiàng)目中發(fā)現(xiàn),不配置這個(gè)屬性,依然運(yùn)轉(zhuǎn)正常,背后冷風(fēng)陣陣,我發(fā)現(xiàn)自己一直以來(lái)可能又理解錯(cuò)了這個(gè)選項(xiàng),然后還在這給別人講。。。

我們首先來(lái)看下proxy_cookie_domain的官方定義,

Syntax:    proxy_cookie_domain off;
proxy_cookie_domain domain replacement;
Default:
proxy_cookie_domain off;
Context: http, server, location
This directive appeared in version 1.1.15.

Sets a text that should be changed in the domain attribute of the “Set-Cookie” header fields of a proxied server response. Suppose a proxied server returned the “Set-Cookie” header field with the attribute “domain=localhost”. The directive proxy_cookie_domain localhost example.org will rewrite this attribute to “domain=example.org”.

翻譯過(guò)來(lái)就是proxy_cookie_domain參數(shù)的作用是轉(zhuǎn)換response的set-cookie header中的domain選項(xiàng),由后端設(shè)置的域名domain轉(zhuǎn)換成你的域名replacement,來(lái)保證cookie的順利傳遞并寫(xiě)入到當(dāng)前頁(yè)面中,注意proxy_cookie_domain負(fù)責(zé)的只是處理response set-cookie頭中的domain屬性,僅此而已。

但是我們知道response在寫(xiě)set-cookie的時(shí)候,domain是一個(gè)可選項(xiàng),并不是必填項(xiàng),所以經(jīng)常能看到如下這種情況

這個(gè)時(shí)候由于set-cookie本身就沒(méi)有domain內(nèi)容,proxy_cookie_domain也就不沒(méi)有必要了,這也是為什么在部分項(xiàng)目中不配置proxy_cookie_domain依然正常的原因。但是對(duì)于一些設(shè)置了domain的項(xiàng)目,比如

這種情況下當(dāng)你用nginx做反向代理的時(shí)候,就必須要轉(zhuǎn)換一下了。

誤區(qū)回溯

說(shuō)到這里,我們?cè)倏纯粗暗腻e(cuò)誤理解:

“proxy_cookie_domain的作用是實(shí)現(xiàn)前后端cookie域名轉(zhuǎn)換,保證順利傳遞”

乍一看好像也沒(méi)錯(cuò),但是現(xiàn)在想想,理解還是不夠啊,因?yàn)閜roxy_cookie_domain的作用是單向的,并不是雙向轉(zhuǎn)換的。我們先看下cookie的傳遞過(guò)程,盜一張圖先(懶得畫(huà)了。。。)

瀏覽器在發(fā)送請(qǐng)求的時(shí)候,會(huì)在request header中帶上cookie項(xiàng)(有內(nèi)容的話),此時(shí)的cookie是一個(gè)字符串,一個(gè)key=value并用分號(hào)分割的字符串,

其中并不包含任何域名信息。這是因?yàn)闉g覽器在設(shè)置cookie選項(xiàng)的時(shí)候,所選取的內(nèi)容都是緩存中接口域名下的。然后request的只要請(qǐng)求發(fā)送出去之后,cookie中有關(guān)domain信息其實(shí)是不存在的,它只是一個(gè)普通的字符串,隨便proxy_pass到任何位置,都會(huì)正常攜帶下去。因此在前端到后端的request的過(guò)程中,proxy_cookie_domain是沒(méi)用的

而server端在做響應(yīng)的時(shí)候,通過(guò)set-cookie的domain屬性,可以控制cookie的生效域名目標(biāo),做到諸如二級(jí)域名cookie分離等等,如果前端接收到的set-cookie的domain和當(dāng)前域名不一致,或者一級(jí)域名不一致(二級(jí)域名可以共享一級(jí)域名下的cookie),這個(gè)cookie在后續(xù)的通信中就是無(wú)效的,所以這里才需要去做domain的轉(zhuǎn)換,也就是說(shuō)response中set-cookie的domain轉(zhuǎn)換才是有意義的,這也正是proxy_cookie_domain的作用所在。
當(dāng)reseponse的set-cookie中domain不去設(shè)置時(shí),cookie順利傳入瀏覽器中,瀏覽器會(huì)自動(dòng)設(shè)置這個(gè)cookie的生效域名為當(dāng)前域名。


和這個(gè)類似的還有proxy_cookie_path屬性,同樣的該屬性僅作用在修改response set-cookie的path屬性,而一般情況下,用的也比較少。

嘮叨兩句

很多問(wèn)題,有時(shí)候都是太過(guò)理所當(dāng)然的以為它是怎么樣的,并且生效了、達(dá)到目的了,我們就認(rèn)為它是這樣的了,但往往大臉就會(huì)在后面不期而至。多學(xué)習(xí),多去關(guān)注一些底層的原理,才會(huì)發(fā)現(xiàn)自己理解的錯(cuò)誤,望諸君共勉~
如果錯(cuò)誤,歡迎指出~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/40318.html

相關(guān)文章

  • Nginx反向代理跨域基本配置與常見(jiàn)誤區(qū)

    摘要:同時(shí)由于跨域了,就想利用的反向代理去處理一下跨域,但是在解決問(wèn)題的同時(shí),發(fā)現(xiàn)網(wǎng)上有些方案的確是存在一些問(wèn)題,在這里總結(jié)一下基本配置,也聊一下常見(jiàn)的配置問(wèn)題。 最近公司前后端分離,前端獨(dú)立提供頁(yè)面和靜態(tài)服務(wù)很自然的就想到了用nginx去做靜態(tài)服務(wù)器。同時(shí)由于跨域了,就想利用nginx的反向代理去處理一下跨域,但是在解決問(wèn)題的同時(shí),發(fā)現(xiàn)網(wǎng)上有些方案的確是存在一些問(wèn)題,在這里總結(jié)一下基本配置...

    lindroid 評(píng)論0 收藏0
  • Nginx反向代理跨域基本配置與常見(jiàn)誤區(qū)

    摘要:同時(shí)由于跨域了,就想利用的反向代理去處理一下跨域,但是在解決問(wèn)題的同時(shí),發(fā)現(xiàn)網(wǎng)上有些方案的確是存在一些問(wèn)題,在這里總結(jié)一下基本配置,也聊一下常見(jiàn)的配置問(wèn)題。 最近公司前后端分離,前端獨(dú)立提供頁(yè)面和靜態(tài)服務(wù)很自然的就想到了用nginx去做靜態(tài)服務(wù)器。同時(shí)由于跨域了,就想利用nginx的反向代理去處理一下跨域,但是在解決問(wèn)題的同時(shí),發(fā)現(xiàn)網(wǎng)上有些方案的確是存在一些問(wèn)題,在這里總結(jié)一下基本配置...

    JasonZhang 評(píng)論0 收藏0
  • CORS跨域與Nginx反向代理跨域優(yōu)劣對(duì)比

    摘要:最近寫(xiě)了一些關(guān)于前后端分離項(xiàng)目之后,跨域相關(guān)方案的基本原理和常見(jiàn)誤區(qū)的帖子,主要包括和反向代理。反向代理此時(shí)后端相當(dāng)于不跨域,和正常請(qǐng)求一致,無(wú)需額外配置。 最近寫(xiě)了一些關(guān)于前后端分離項(xiàng)目之后,跨域相關(guān)方案的基本原理和常見(jiàn)誤區(qū)的帖子,主要包括CORS和Nginx反向代理。這兩種方案項(xiàng)目中都有在用,各有優(yōu)缺,關(guān)于具體使用哪種方案,大家的觀點(diǎn)也不大一致,本文主要就此展開(kāi)一下,從前后端及服務(wù)...

    yiliang 評(píng)論0 收藏0
  • Nginx反向代理升級(jí)--upstream改造proxy_pass

    摘要:同時(shí)若不想破壞已經(jīng)做好的的話,也可以不使用,直接轉(zhuǎn)發(fā)到服務(wù)器的內(nèi)網(wǎng)應(yīng)該也是可以的。這樣在安全和效率高上就都能得到一定的提升。 之前寫(xiě)了一些nginx的東西,這次繼續(xù),主要使用upstream針對(duì)proxy_pass轉(zhuǎn)發(fā)做個(gè)處理一般情況下我們?cè)谑褂胣ginx反向代理的時(shí)候,都是如下配置, ... location /api { proxy_pass https://b.test.c...

    harryhappy 評(píng)論0 收藏0
  • 一段萬(wàn)能的nginx接口反向代理配置

    摘要:作為前端開(kāi)發(fā),每次調(diào)試接口,把代碼發(fā)到測(cè)試服務(wù)器,是很費(fèi)時(shí)費(fèi)事的一件事情。為了提高效率,想到了反向代理來(lái)解決這一問(wèn)題。如何在手機(jī)上調(diào)試呢手機(jī)上不可能直接訪問(wèn)可以把手機(jī)和電腦連接到同一個(gè)網(wǎng)段,使用電腦的進(jìn)行訪問(wèn)。 作為前端開(kāi)發(fā),每次調(diào)試接口,把代碼發(fā)到測(cè)試服務(wù)器,是很費(fèi)時(shí)費(fèi)事的一件事情。為了提高效率,想到了nginx反向代理來(lái)解決這一問(wèn)題。 接口地址:test.com 訪問(wèn)地址:loca...

    z2xy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<