星期四, 19 6 月, 2025
No Result
View All Result
育心文具行

育心文具行

  • 首頁
  • 心得x體驗
  • 筆記x備忘
  • 閒談x雜記
  • 我的工具箱
  • 關於我
育心文具行
  • 首頁
  • 心得x體驗
  • 筆記x備忘
  • 閒談x雜記
  • 我的工具箱
  • 關於我
No Result
View All Result
育心文具行
Home 筆記x備忘

使用 Cloudflare Workers 處理前端跨域問題

2024-09-01
in 筆記x備忘
Reading Time:5 mins read
A A
0

在 Web Application 走前後端分離的開發時,常會遇到 CORS 的問題,先科普什麼是 CORS,請參考:

Cross-Origin Resource Sharing (CORS) – HTTP | MDN

developer.mozilla.org

Cross-Origin Resource Sharing (CORS) is an HTTP-header based mechanism that allows a server to indicate any origins (domain, scheme, or port) other than its own from which a browser should permit …

—

除了使用 JSONP 的處理方式以外,較快的解決方法有:

  1. 前端架設一個 proxy server 提供給前端呼叫使用
  2. 後端 server 端透過 nginx 或其他方法允許跨域的 request

兩個方法都存在著,正式環境和測試環境在環境設定上必然有所不同,就差在前端改還是後端改了。

而架設 proxy server 的方法也有兩個常見的作法:

  1. 本地環境架設一個 porxy server ,這邊提供一個 vue+ vite 的範例,請參考。
  2. 架設一個在網路上的 proxy server

原則上來說第一種方式比較保險的,但可能有種種技術因素導致無法實現,於是第二種方法,我們透過 Cloudfalre 來實現了。

原始碼和別人寫的說明附在最下方,直接講注意事項:

  1. 你需要一個 Cloudflare 帳號,並且有存取 Workers and Pages 這個服務的權限。
  2. 使用 Worker 服務實作,他是公開的,且免費版有 100k 的次數限制,記得要設定白名單避免被濫用。
  3. 要記得前端呼叫的網域要透過環境區分,把這個放上正式環境,呼叫次數可能會爆掉。

2024-08-31 Update

更新一些要注意的事項:

  1. 白名單是 request header 中的 Origin ,是來源網址不是 proxy 導向的網址。這如果是後端架設的話得和前端溝通是哪個網址來源。
  2. 針對 Worker 裡面的 fix() 方法我做了一些修改,如果有錯誤還請提醒,程式碼如下:
function fix(myHeaders) {
  // myHeaders.set("Access-Control-Allow-Origin", "*");
  myHeaders.set("Access-Control-Allow-Headers", event.request.headers.get("access-control-request-headers"));
  myHeaders.set("Access-Control-Allow-Origin", event.request.headers.get("Origin"));
  if (isOPTIONS) {
    myHeaders.set("Access-Control-Allow-Methods", "GET,HEAD,POST,OPTIONS");

    //myHeaders.set("Access-Control-Allow-Credentials", "true");

    // myHeaders.delete("X-Content-Type-Options");
  }
  return myHeaders;
}

2024-09-01 Update

我 fork 專案,更新了一個在 header 帶 auth 的版本,應該對防止濫用更有幫助。 網址如下:

GitHub – lazyjerry/cloudflare-cors-anywhere: CORS “anywhere” proxy in a Cloudflare …

github.com

CORS “anywhere” proxy in a Cloudflare worker. DEMO at: https://test.cors.workers.dev/ – lazyjerry/cloudflare-cors-anywhere

用法在下面兩個連結分享中有說明了,簡單來說就是一個 proxy for api

這是 cloudflare-cors-anywhere 來源:

GitHub – Zibri/cloudflare-cors-anywhere: CORS “anywhere” proxy in a Cloudflare worker. …

github.com

CORS “anywhere” proxy in a Cloudflare worker. DEMO at: https://test.cors.workers.dev/ – Zibri/cloudflare-cors-anywhere

這是關於 cloudflare-cors-anywhere 的操作教學:

Just a moment…

lanyundev.com

—

同場加映:

這裡有修改 response header 的方法,不太推薦,很容易忘記。

CloudFlare 解决 CORS 跨域问题 – ROYWANG

roy.wang

目前博客的 CDN 方案是通过DNS识别境内境外IP,进行不同的解析的,但是使用 CloudFlare 会导致…..

Tags: cloudflareCORSproxyworker前端跨域
Share22Tweet14
Previous Post

Nginx 中同一個網域設定不同應用程式/目錄

Next Post

用 ChatGPT 生成 Codeigniter4 Model Class

Related Posts

筆記x備忘

實作 js 函式庫包裝為 API 提供給後端呼叫

最近在想有滿多 js 實作資料處理的函式...

2025-02-04
100
筆記x備忘

如何在網站中整合 Google reCAPTCHA v3

關於 Google reCAPTCHA ...

2024-10-22
100
筆記x備忘

Mac 使用 Nodejs 的管理工具 n 來切換版本

Nodejs 在前端應用越來越廣泛,有時...

2024-08-19
100
筆記x備忘

使用 Nginx 設定通過 Cloudflare 的真實 IP 與只允許 Cloudflare IP 來的流量。

一次講兩件事,都是和 Cloudflar...

2024-08-07
100
筆記x備忘

Cloudflare Workers 服務介紹

如果有使用 cloudflare 服務,...

2022-10-17
100
Load More
Next Post

用 ChatGPT 生成 Codeigniter4 Model Class

《從0到1:打開世界運作的未知祕密,在意想不到之處發現價值》讀書心得(嘗試用 AI 生成)

使用 Nginx 基本認證保護動態內容。以一個舊網站為例。

全站搜尋

No Result
View All Result

關於我

育心文具行

Jerry Lin

程式設計師

育心文具行是一家文具店,老闆的小兒子是一個設計師,職業是設計程式,興趣是設計人,倒是還沒有實作的機會。
--
所有的相遇都不是巧合。
在廣告公司待了三年有兩年多在做內容產品,離職後繼續在內容產業走了四年多,最後選則離開台灣的公司體制在家 SOHO ,碰上了 2020 年疫情才知道原來自己這是走在時代的潮流尖端。 感謝許多老闆和貴人相助,至今目前尚能存活,在台北街頭努力著。

近期文章

  • 於 MacOS 中,整合自然語言,自動化添加行事曆事件
  • 使用 deepwiki-open 針對程式碼產生 WIKI
  • 使用 Tailwind CLI 快速建立靜態 CSS 檔的基本步驟
  • Visual Studio Code 的 PHP CS Fixer 設定
  • MacOS 添加本地伺服器的 DNS

分類

  • 心得x體驗 (45)
  • 筆記x備忘 (77)
  • 閒談x雜記 (13)

贊助買咖啡

Facebook Instagram RSS

標籤

ai android cloudflare flutter git ios javascript linode linux MAC macos mis nginx php plugin QBQ!問題背後的問題 server work sublime sublime text vps vue.js vue3 What if What If? 如果這樣,會怎樣? wordpress 前端 原則 原子習慣 團隊,從傳球開始 團隊,從傳球開始:五百年都難以超越的 UCLA 傳奇教練伍登培養優越人才和團隊的領導心法 壓力測試 外掛 如果這樣,會怎樣?:胡思亂想的搞怪趣問 正經認真的科學妙答 心得 情緒 活動心得 灰階思考 約翰‧漢尼斯 股癌 自慢10 自慢10:18項修練 記錄 謝孟恭 讀書心得 這一生,你想留下什麼?

文章分類

  • 心得x體驗 (45)
  • 筆記x備忘 (77)
  • 閒談x雜記 (13)

近期文章

  • 於 MacOS 中,整合自然語言,自動化添加行事曆事件
  • 使用 deepwiki-open 針對程式碼產生 WIKI
  • 使用 Tailwind CLI 快速建立靜態 CSS 檔的基本步驟
  • Visual Studio Code 的 PHP CS Fixer 設定
  • MacOS 添加本地伺服器的 DNS

近期留言

  • 「Bolin Lai」於〈WordPress 之中藍新金流開啟後, Elementor 外掛有時會打不開的問題處理〉發佈留言
  • 「Jerry Lin」於〈WordPress 之中藍新金流開啟後, Elementor 外掛有時會打不開的問題處理〉發佈留言
  • 「JCL」於〈WordPress 之中藍新金流開啟後, Elementor 外掛有時會打不開的問題處理〉發佈留言

文章月曆

2025 年 6 月
日 一 二 三 四 五 六
1234567
891011121314
15161718192021
22232425262728
2930  
« 5 月    

© 2020 hipster.crazyjerry.studio - a blog about experience, notes and nonsense, by Jerry Lin.

No Result
View All Result
  • 首頁
  • 心得x體驗
  • 筆記x備忘
  • 閒談x雜記
  • 我的工具箱
  • 關於我

© 2020 hipster.crazyjerry.studio - a blog about experience, notes and nonsense, by Jerry Lin.