aws s3跨域訪問問題分析定位

2021-09-25 11:38:46 字數 1657 閱讀 8467

公司把儲存從七牛雲遷移到aws s3,遷移完成後,在**獲取資源的時候,報錯,提示跨域存在問題。提示語見下:

access to image at 『』 from origin '』 has been blocked by cors policy: no 『access-control-allow-origin』 header is present on the requested resource. origin 『*』 is therefore not allowed access.

由於也是第一次使用s3,對相關的規則不熟悉,走了很多彎路,前後端嘗試了各種解決跨域的辦法,後面通過查詢cors,找到了答案。cors是什麼呢?來看一下解釋,跨域資源共享 (cross-origin resource sharings),知道它的概念,就知道了跨域需要用它來配置處理,接下來,讓我們找一下s3裡面的s3 cors的配置。配置路徑:s3->儲存桶->許可權->cors配置,我們可以在這裡編輯跨域訪問s3資源的規則,預設時沒有配置的。配置見下圖:

什麼是cors?cross-origin resource sharings。下面來對cors的配置做一下簡單的講解。

下面看一下我的配置,配置檔案:

*

get

*允許來自所有源的跨源,* 萬用字元將引用所有源,可以根據實際需要進行配置,例如:允許來自於的請求訪問s3。

get允許跨源 get,你可以根據需要配置put、post 和 delete 請求,例如:

put

post

delete

下面針對配置具體描述一下:

allowedmethod 元素

在 cors 配置中,您可以為 allowedmethod 元素指定以下值。

在 allowedorigin 元素中,可指定您希望允許從中傳送跨源請求的源,例如 源字串只能包含至少乙個 * 萬用字元,例如 http://*.example.com。您可以選擇將 * 指定為源,以允許所有源傳送跨源請求。您還可以指定 https 只允許安全的源

allowedheader 元素

allowedheader 元素通過 access-control-request-headers 標頭指定預檢請求中允許哪些標頭。access-control-request-headers 標頭中的每個標頭名稱必須匹配規則中的相應條目。amazon s3 將僅在響應中傳送請求的允許標頭。有關可以在傳送至 amazon s3 的請求中使用的標頭示例列表,請參閱 amazon ****** storage service api reference 指南中的常用請求標頭。

常用請求標頭:

序號head name

1authorization

2content-length

3content-type

4content-type

5content-md5

6date

7expect

8host

9x-amz-content-sha256

10x-amz-date

11x-amz-security-token

跨域訪問問題

瀏覽器跨域 跨域問題 於瀏覽器的同源策略,瀏覽器為了提高 的安全性,在傳送ajax請求時,只有在當前頁面位址與請求位址的協議 網域名稱 埠號相同時才允許訪問,否則會被攔截。協議即通訊協議,比如我們現在常見的http和https,如果當前頁面位址使用http協議,請求的位址使用https協議,那麼這個...

angularjs 跨域訪問問題

最近使用angular js 訪問restful 後台時需要考慮cors跨域訪問的問題,angular js 的http訪問本身也是ajax,在跨域訪問時需要做響應的設定 1.伺服器端設定 當跨域訪問時,伺服器端需要設定響應的header,access control allow origin 表示...

js跨域訪問問題

最近在搞paas系統,paas ui微服務服務和後台微服務的聯調,想要在ui的js中直接使用ip位址的方式 ip port url 獲取後台資料。發現報錯。後來上網看問題是瀏覽器由於安全方面的考慮,禁止這種跨域訪問。其實ajax已經從跨域將伺服器資料取回,但瀏覽器禁止了該資料的使用。所以要將瀏覽器的...