---
# System prepended metadata

title: "CORS 跨來源資源共用 \U0001F4DD"
tags: [Website]

---

# CORS 跨來源資源共用 📝
###### tags: `Website`

:::warning
當網頁進行跨領域請求時，瀏覽器會根據「 同源政策 」判定是否攔截請求的回應。
:::
> CORS（Cross-Origin Resource Sharing）is a mechanism that allows a website on one url to request data from a different url.
> Access-Control-Allow-Origin、Access-Control-Request-Method、Access-Control-Request-Headers
> CORS 是一種機制，他允許一個網站（網址）發送請求從另一個網址取得資料。
> 透過 伺服器在 HTTP Header 的設定，讓瀏覽器能取得不同來源的資源。

- DOM 的同源政策
- Cookie 的同源政策

## 常見的跨領域請求
- 使用 XMLHttpRequest 或 Fetch API 進行跨站請求。
- 網頁字體（@font-face）
- CSS 樣式表
- 使用 WebGL API（在任何相容的網頁瀏覽器中呈現互動式2D和3D圖形）。
- 使用 Canvas drawImage（動態組合圖片或作為背景）。

## Same-origin policy 同源政策 
>考量到使用者的資訊安全，瀏覽器們針對跨域請求的行為制定了同源政策，一旦被判定為非同源，從目標資源取得的回應（Response）就會被攔截。

![](https://i.imgur.com/YtVc3sS.png)
![](https://i.imgur.com/kDCcqXY.png)


目標資源與當前網頁的網域（domain）、通訊協定（protocol）或通訊埠（port）只要有任一項不同，就算是不同來源。


簡單請求 simple requests
預檢（Preflighted）

## CORS 跨來源資源共用
透過設置HTTP Request Heaader取得
Access-Control-Allow-Origin
Access-Control-Request-Method
Access-Control-Request-Headers

cookie問題

代理伺服器（或簡易反向代理 nginx）








<!-- ![](https://i.imgur.com/fWtE7h4.png)
 -->