Skip to main content

[web] 跨域請求 CORS

{% note info %} 筆記關於跨域請求 CORS {% endnote %}

跨來源資源共用#

  • 同源策略指的是,瀏覽器中某些行為,必須與來源頁面的「協定」、「網域」、「連接埠」都相同,才能進行。

  • 跨來源資源共用(Cross-Origin Resource Sharing (CORS))是一種使用額外 HTTP 標頭令目前瀏覽網站的使用者代理取得存取其他來源(網域)伺服器特定資源權限的機制

跨域請求#

而針對跨域請求,瀏覽器規範了伺服端可控制的項目,允許的來源、請求方法、可否發送Cookie、可取得的回應標頭,回應有效期限等。

CORS將跨域請求分為:

  • 簡單(simple)的跨來源請求,不觸發預檢的請求,只使用 GET、HEAD、POST,且不添加額外的 Header
  • 帶預檢(Preflight )的請求 使用了PUT、DELETE、CONNECT、OPTIONS、TRACE、PATCH方法(其實非簡單請求以外就會觸發預檢),瀏覽器會先使用OPTIONS來試探伺服器Access-Control-Allow-Methods 及 Access-Control-Allow-Headers header。Preflight Request 沒過的話,真的 Request 也就不會發送了,

建議延伸閱讀#

  • ithome深入認識跨域請求

    1. 解說同源,前端請求歷史方法(XMLHttpRequest,JSONP)及請求方法。
    2. 非必要的話,就別將Access-Control-Allow-Credentials設為true。
  • 詳細的規範可以看MDN-CORS