Настройки заголовка ответа не работают в случае ошибки

Функцияctx.Response.Header.Set не работает в случае ошибки.

Пожалуйста, проверьте код ниже,

package main

import "fmt"
import "github.com/valyala/fasthttp"

func main() {
    requestHandler := func(ctx *fasthttp.RequestCtx) {
        ctx.Response.Header.Set("Access-Control-Allow-Origin", "*")
        switch string(ctx.Path()) {
        case "/foo":
            fmt.Fprintf(ctx, "Success result")
        case "/bar":
            ctx.Error("Unsupported path", fasthttp.StatusNotFound)
        }
    }
    fasthttp.ListenAndServe(":8080", requestHandler)
}

Заголовок ответа URL-адреса / foo:

Сервер: fasthttp Дата: Пн, 16 апреля 2018 04:05:10 GMT

Тип контента: текстовый / простой; кодировка = UTF-8

Длина контента: 14

Access-Control-Allow-Origin: *

Но заголовок ответа /bar,

Сервер: fasthttp

Дата: пн, 16 апреля 2018 04:05:50 GMT

Тип контента: текстовый / простой; кодировка = UTF-8

Длина контента: 16

Заголовок Access-Control-Allow-Origin не применяется. Я что-то пропустил здесь?

0 ответов

Метод ctx.Error намеренно очищает заголовки:

// ...
// Warning: this will reset the response headers and body already set!
func (ctx *RequestCtx) Error(msg string, statusCode int) {...}

Решение - использовать другие методы:

ctx.SetContentType("text/plain")
ctx.SetStatusCode(404)
ctx.SetBodyString("Unsupported path")
Другие вопросы по тегам