Nginx通過CORS配置實現跨域訪問

2021-07-28 10:36:42 字數 1115 閱讀 4461

cors: cross-origin resource sharing (跨域資源共享),是指a頁面想獲得b頁面的資源,如果a、b頁面的協議、網域名稱、埠、子網域名稱不同,所進行的的訪問都是進行跨域的,而瀏覽器為了安全考慮,對跨域訪問一般都是進行了限制的。需要注意的是,cors需要瀏覽器和伺服器同時支援。目前,所有瀏覽器都支援該功能,ie瀏覽器不能低於ie10。

瀏覽器將所有的cors請求分為簡單請求和非簡單請求,對於簡單請求來說,以get為例:

if ($request_method = 'get')
上面的配置中:

access-control-allow-origin:必須配置的字段,'*'表示接受任意網域名稱的請求,也可以指定接受某乙個網域名稱的請求

access-control-request-headers:如果瀏覽器請求包括access-control-request-headers欄位,則在nginx配置中也是必須的,是乙個由逗號分隔的字串

access-control-expose-headers:可選配置字段。cors請求時,xmlhttprequest物件的getresponseheader()方法只能拿到6個基本字段:cache-control、content-language、content-type、expires、last-modified、pragma。如果想拿到其他字段,就必須在access-control-expose-headers裡面指定。上面的例子指定,getresponseheader('foobar')可以返回foobar欄位的值

瀏覽器先詢問伺服器,當前網頁所在的網域名稱是否在伺服器的許可名單之中,以及可以使用哪些http動詞和頭資訊字段。只有得到肯定答覆,瀏覽器才會發出正式的xmlhttprequest請求,否則就報錯。

if ($request_method = 'options')
access-control-request-method:該字段是必須的,用來列出瀏覽器的cors請求會用到哪些http方法

access-control-max-age:用來指定本次預檢請求的有效期,單位為秒

其他引數參考簡單請求即可

Nginx配置跨域(CORS)

現在前 後端分離已經是web應用最常見的架構。但由於瀏覽器的同源策略導致web應用訪問不同域的資源不得不面臨跨域問題。如下圖所示 簡單說下專案的現狀 1 後台 服務端 採用紅帽的開源嵌入式web伺服器 undertow 部署 2 前端,使用vuejs element ui開發,通過nginx進行託管...

Angular通過CORS實現跨域方案

就拿iframe來說作為乙個前端工程師,我極為討厭iframe這種東西.它不光增加了效能上的高負荷,同時也不利於掌控.在angular應用中實現跨域的方式相對簡單,基本上通過兩種方式即可.一種是jsonp,另一種是通過cors.前者是相對比較老的手法,後者我感覺更加給力一點,所以本文主要說一下ang...

Angular通過CORS實現跨域方案

就拿iframe來說作為乙個前端工程師,我極為討厭iframe這種東西.它不光增加了效能上的高負荷,同時也不利於掌控.在angular應用中實現跨域的方式相對簡單,基本上通過兩種方式即可.一種是jsonp,另一種是通過cors.前者是相對比較老的手法,後者我感覺更加給力一點,所以本文主要說一下ang...