init_by_lua_block {
local cors = require('lib.resty.cors');

cors.allow_host([==[.*\.example\.com]==])
cors.allow_method('GET')
cors.allow_method('POST')
cors.allow_method('PUT')
cors.allow_method('DELETE')
cors.max_age(7200)
cors.allow_credentials(false)
}

header_filter_by_lua_block {
local cors = require('lib.resty.cors');
cors.run()
}
}

此配置允許代碼從 example.com 域中的任何主機(包括 api.example.com)發出請求。它明確允許 GET、PUT、POST 和 DELETE 動詞,但不允許腳本將憑據發送到跨源目標。 

Lua CORS 指南:它是什么以及如何啟用它 圖片

Nginx

如果您只想運行一些簡單的腳本或編寫自己的 Web 代碼,Nginx 的lua-nginx-module可以運行 Lua 腳本來響應事件。?

Nginx 有上面的 ngx_http_cors_filter,它將為您實現 CORS 消息傳遞。其配置與上面的 OpenResty fork 相同。這里有詳細的配置說明其中包括如何不在頂部配置它 的示例。

阿帕奇

Apache 的mod_lua類似于 Nginx 的 Lua 插件。你可以使用它來編寫在服務器內部運行的 Lua 腳本。?

再次,您需要為 CORS 配置 Web 服務器并讓它為您實現 HTTP 消息傳遞。 

如果您快速搜索“apache cors”,您會看到類似的建議。

<Directory /var/www/html>
Order Allow,Deny
Allow from all
AllowOverride all
Header set Access-Control-Allow-Origin "*"
</Directory>

這是糟糕的建議。第 5 行在服務器上打開了一個很大的安全漏洞,漏洞大到某些瀏覽器甚至可能會忽略并拒絕跨源請求。 

不要向任何請求開放服務器,而是使用正則表達式:

<Directory /var/www/html>
Order Allow,Deny
Allow from all
AllowOverride all
SetEnvIf Origin "^http(s)?://(.+\.)?example\.com$" AccessControlAllowOrigin=$0
Header set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
</Directory>

這是一個更安全的設計,并模擬了上面的 Nginx 配置。 

文章來源:Lua CORS Guide: What It Is and How to Enable It

上一篇:

Web 應用程序安全檢查表:10 項改進

下一篇:

Lua CSRF 保護 指南:示例 以及如何啟用
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費