星期日, 17 8 月, 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 年疫情才知道原來自己這是走在時代的潮流尖端。 感謝許多老闆和貴人相助,至今目前尚能存活,在台北街頭努力著。

近期文章

  • LLM 生成參數清單與說明
  • 使用 google 的 Gemini CLI 來製作字幕
  • 2025-07-29 社交模式檢討
  • 2025-07-25 社交模式檢討
  • 2025-07-12 N8N Workshop 筆記心得

分類

  • 心得x體驗 (47)
  • 筆記x備忘 (79)
  • 閒談x雜記 (15)

贊助買咖啡

Facebook Instagram RSS

標籤

android ci4 cloudflare Codeigniter codeigniter 4 flutter git ios linode linux MAC macos nginx php plugin QBQ!問題背後的問題 server work sublime sublime text vps vue.js vue3 What if What If? 如果這樣,會怎樣? wordpress 備份 原則 團隊,從傳球開始 團隊,從傳球開始:五百年都難以超越的 UCLA 傳奇教練伍登培養優越人才和團隊的領導心法 外掛 如果這樣,會怎樣?:胡思亂想的搞怪趣問 正經認真的科學妙答 媒體識讀 工作的原則 心得 意志力 活動心得 灰階思考 第三部分 第二部分 第四部分 股癌 自慢10 自慢10:18項修練 謝孟恭 讀書心得

文章分類

  • 心得x體驗 (47)
  • 筆記x備忘 (79)
  • 閒談x雜記 (15)

近期文章

  • LLM 生成參數清單與說明
  • 使用 google 的 Gemini CLI 來製作字幕
  • 2025-07-29 社交模式檢討
  • 2025-07-25 社交模式檢討
  • 2025-07-12 N8N Workshop 筆記心得

近期留言

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

文章月曆

2025 年 8 月
日 一 二 三 四 五 六
 12
3456789
10111213141516
17181920212223
24252627282930
31  
« 7 月    

© 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.