怎样与 CORS 和 cookie 打交道

> 翻译:疯狂的技术宅

### 前言

CORS 与 cookie 在前端是个非常重要的问题,不过在大多数情况下,因为前后端的 domain 一般是相同的,所以很少去关心这些问题。或者只是要求后端设置 `Access-Control-Allow-Origin: *` 就行了,很少去了解背后运作的机制。

针对这个问题,[MDN](https://developer.mozilla.org/zh-TW/docs/Web/HTTP/CORS) 上有非常详细的解释,所以这篇文章主要在于整理重点和实际操作时经常出现的问题。

### 同源策略(same-origin policy)

为了防止 javascript 在网页上随意撒野,同源策略规定了某些特定的资源,代码必须在**同源**的情况下才可以存取。

什么是同源呢?一份 `document` 的来源,由 protocol、host 和 port 来定义。也就是说如果文件1来自`http://kalan.com`,而文件2来自于 `https://kalan.com` 他们就不算是同源。那如果是子域名呢?像是 `https://api.foobar.com` 和 `https://app.foobar.com`。因为他们的 host 不同,所以也不算同一个源。

而有些资源是本来就能够通过跨来源取得的:

* ``

* `

* `