
使用WEB3錢包API實現智能合約交互的完整教程
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 動詞,但不允許腳本將憑據發送到跨源目標。
如果您只想運行一些簡單的腳本或編寫自己的 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