by 糖果
这不是翻译的文章,其中直接用了我的理解,进行功能的描述。

How do I read a HTTP header?

如何读取HTTP的Header数据

The req field of the self passed to actions has a headers fields with all the request headers. They are normalized so you don’t have to be concerned about capitalization.

在Lapis中headers数据,直接存于self.req.headers数据结构中,可以像访问map一样,用key取得对应的字段值,代码如下:

local lapis = require("lapis")
local app = lapis.Application()

app:match("/", function(self)
  return self.req.headers["referrer"]
end)

How do I write a HTTP header?

如何向HTTP的header中写入数据。
There are two ways to write headers. In these examples we set the Access-Control-Allow-Origin header to *

基本上有两种方式,可以进行写操作,下面代码中的例子是把Access-Control-Allow-Origin这个字段设成"*"

You can return a headers field (or pass it to write) from an action:

我们可以一个路由的return响应动作中返回一个Header。

local lapis = require("lapis")
local app = lapis.Application()

app:match("/", function(self)
  return {
    "OK",
    headers = {
      ["Access-Control-Allow-Origin"] = "*"
    }
  }
end)
Alternatively, the res field of the self has a headers field that lets you set headers.

或者,你也可以通过改变self.res.header这个数据结构中的字段值,来改变headers的设定。

local lapis = require("lapis")
local app = lapis.Application()

app:match("/", function(self)
  self.res.headers["Access-Control-Allow-Origin"] = "*"
  return "ok"
end)
If you need to change the content type see below.

如何你想改变,返回数据的类型,看下面的说明。

How do I set the content type?

如何设定返回内容的类型。

Either manually set the header as described above, or use the content_type option of the write method, or action return value:

我们使用content_type选项方法, 改变返回数据的类型。

local lapis = require("lapis")
local app = lapis.Application()

app:match("/", function(self)
  return { content_type = "text/rss", [[<rss version="2.0"></rss>]] }
end)