跳转至

cors: 它是 nginx-module-lua 上 CORS 的实现

安装

如果您尚未设置 RPM 存储库订阅,请 注册。然后您可以继续以下步骤。

CentOS/RHEL 7 或 Amazon Linux 2

yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-cors

CentOS/RHEL 8+、Fedora Linux、Amazon Linux 2023

dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-cors

要在 NGINX 中使用此 Lua 库,请确保已安装 nginx-module-lua

本文档描述了 lua-resty-cors v0.2.1,发布于 2016 年 10 月 17 日。


它是 OpenResty 上 CORS 的实现,并且将 nginx-http-cors 移植到 OpenResty。

用法

它应该放置在 nginx 输出头部阶段。在 OpenResty 中,它应该是 header_filter_by_lua*。配置应如下所示:

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

        cors.allow_host([==[.*\.google\.com]==])
        cors.allow_host([==[.*\.facebook\.com]==])
        cors.expose_header('x-custom-field1')
        cors.expose_header('x-custom-field2')
        cors.allow_method('GET')
        cors.allow_method('POST')
        cors.allow_method('PUT')
        cors.allow_method('DELETE')
        cors.allow_header('x-custom-field1')
        cors.allow_header('x-custom-field2')
        cors.max_age(7200)
        cors.allow_credentials(false)

        cors.run()
    }
}

API

allow_host

语法: cors.allow_host(host)

这将匹配 cors 请求中的主机,然后添加到 Access-Control-Allow-Origin 头部,如下所示:

请求:
Origin: https://www.google.com

响应:
Access-Control-Allow-Origin: http://www.google.com

expose_header

语法: cors.expose_header(header)

这将添加到 Access-Control-Expose-Headers 头部,如下所示:

请求:
Origin: https://www.google.com

响应:
Access-Control-Expose-Headers: x-custom-field1,x-custom-field2

allow_method

语法: cors.allow_method(method)

这将添加到 Access-Control-Allow-Methods 头部,如下所示:

请求:
Origin: https://www.google.com

响应:
Access-Control-Allow-Methods:GET,POST,PUT

allow_header

语法: cors.allow_header(header)

这将添加到 Access-Control-Allow-Headers 头部,如下所示:

请求:
Origin: https://www.google.com

响应:
Access-Control-Allow-Headers:x-custom-field1,x-custom-field2

max_age

语法: cors.max_age(age)

这将添加到 Access-Control-Max-Age 头部,如下所示:

请求:
Origin: https://www.google.com

响应:
Access-Control-Max-Age: 7200

Allow-Credentials

语法: cors.allow_credentials(true or false)

这将添加到 Access-Control-Allow-Credentials 头部,如下所示:

请求:
Origin: https://www.google.com

响应:
Access-Control-Allow-Credentials: true

run

语法: cors.run()

这是 lua-resty-cors 运行的入口。

GitHub

您可以在 nginx-module-cors 的 GitHub 存储库 中找到此模块的其他配置提示和文档。