https://avatars.githubusercontent.com/u/6058558

程式狂想筆記

CORS 解決方案:前端如何處理收不到 Response Header 的問題

最近我設計了一個 OAuth Token 驗證給前端串接,但發現前端無法抓取到我後端的 Response Header。經過一番研究,我發現問題出在 CORS 上。以前我對 CORS 都是簡單了解,沒想到 CORS 規範的內容如此豐富。這篇文章就是我對此進行深入研究的記錄。這篇還一點債了… 心智圖 因為 mermaid 無法用-,所以用_置換。 mindmap Same_Origin Policy Origin Tuple origin schema+host+port opaque origin file://.../xxx.html CORS 簡單請求 發送Request不會預檢 Request會送到Server Response 都會檢查 Access_Control_Allow_Origin 非簡單請求 發送Request會預檢 預檢沒過,Request不會送到Server Response 都會檢查 Access_Control_Allow_Origin CORS 容易忽略那些事 Request 不能隨意帶 Header JS不能隨意用 Response Header CORS 相關 Header Access_Control_Allow_Origin Access_Control_Allow_Methods Access_Control_Allow_Headers Access_Control_Max_Age Access_Control_Expose_Headers Access_Control_Allow_Credentials Origin Header Origin - HTTP | MDN 1 2 3 Origin: null Origin: <scheme>://<hostname> Origin: <scheme>://<hostname>:<port> 常見我們 AJAX 跨域會看到 HTTP 有 Origin Header 內容。

實作指南:使用 Linux Bridge 連接虛擬網路與設備廢棄

最近我需要讓 KVM 不透過設定路由,而是直接連接到現有網段。因此,我進一步研究網路新手虛擬網路設備 veth pair 實作筆記 - 程式狂想筆記這篇文章的主題。在這裡,我將簡單介紹如何操作 Linux Bridge,讓多種端口可以互相連接。

API 規格文件:簡單快速設計工具

使用快速規劃 API 規格文件的好處是,它可以幫助開發團隊更有效地溝通和協作。透過清晰的 API 規格文件,團隊成員可以快速了解 API 的功能、輸入和輸出,並且可以更容易地進行開發和測試。此外,API 規格文件還可以提供給其他團隊或合作夥伴,以便他們能夠更好地理解和使用你的 API。

Entity Framework Core:FromSqlRaw 與 FromSqlInterpolated 的使用與差異

Entity Framework Core (EF Core) 是一個開源的、跨平台的資料庫存取技術,它可以讓開發者用 .NET 對資料庫進行操作,而不需要寫 SQL 語句。然而,有時候我們還是需要直接執行 SQL 查詢,這時候 EF Core 提供了 FromSqlRawFromSqlInterpolated 兩種方法。

這兩種方法的主要差異在於,FromSqlRaw 需要手動參數化查詢,而 FromSqlInterpolated 則會自動參數化查詢。如果不正確使用,可能會使應用程式暴露於 SQL 注入攻擊。

以下是一些使用這兩種方法的例子和解釋:

不改系統時間測試時間神器:faketime

faketime 是一個強大的工具,它可以讓你在測試中操控時間。這篇文章將教你如何在 Ubuntu 上安裝和使用 faketime。 Ubuntu 安裝 首先,我們需要更新我們的套件列表,然後安裝 faketime: 1 2 3 4 # 更新套件列表 sudo apt update # 安裝 faketime sudo apt install faketime 接著,我們需要設定一個環境變數,讓系統知道 faketime 的位置: 1 export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1 Mac 安裝 Warning 請注意,我沒有 Mac ,所以無法親自測試這段。如果你在使用過程中遇到問題,請參考 faketime 的官方文件或者在網路上尋找解答。 在 Mac 上,我們可以使用 Homebrew 來安裝 faketime: 1 brew install libfaketime 然後,我們需要設定兩個環境變數。這兩個環境變數會讓系統在執行程式時,強制使用我們指定的動態連結庫: 1 2 export DYLD_FORCE_FLAT_NAMESPACE=1 export DYLD_INSERT_LIBRARIES=/path/to/libfaketime.1.dylib 但我沒有 Mac ,所以無法測試這段 指令相關操作 在這部分,我們將介紹如何使用 faketime 來操控時間。 faketime 指令包起來 我們可以使用 faketime 來改變指令的執行時間。例如,我們可以將時間設定為上週五下午五點,或者設定為 2018 年 12 月 24 日的 08:15:42:

關掉 Windows Server 自動更新方法

最近公司電腦常常莫名其妙關機,我們很常因為電腦重開導致本地 SQL Server 還沒開機完,IIS 站台 .Net 程式無法正常執行。前端也因為 pm2 沒登入沒有啟動。後來發現是 Windows 更新造成的,所以才找把它關掉方法。

SQL Server 與 MySQL 中唯一索引鍵對 NULL 值的處理差異

最近我在 SQL Server 中設定了 Unique Key,目的是為了防止因程式錯誤導致重複的資料被插入。然而,我沒有考慮到 null 值也會被視為重複的資料。在 SQL Server 中,唯一索引鍵預設會阻擋重複的 null 值,但在 MySQL 中,唯一索引鍵則不會阻擋重複的 null 值。