Bagaimana untuk menghalang Fiber daripada mendaftarkan laluan HEAD secara automatik?

WBOY
Lepaskan: 2024-02-06 09:33:03
ke hadapan
450 orang telah melayarinya

Bagaimana untuk menghalang Fiber daripada mendaftarkan laluan HEAD secara automatik?

Kandungan soalan

Fiber v2 (https://go Fiber.io/) akan menambah laluan HEAD secara automatik untuk setiap laluan GET. Adakah mungkin untuk mengelakkan ini?

Saya baru nak daftar GET. Sebenarnya, saya hanya mahu mendaftarkan laluan yang saya tambahkan secara eksplisit.

Adakah mungkin untuk melakukan ini?


Jawapan betul


Lihat (*aplikasi).dapatkan:

// get registers a route for get methods that requests a representation
// of the specified resource. requests using get should only retrieve data.
func (app *app) get(path string, handlers ...handler) router {
    return app.head(path, handlers...).add(methodget, path, handlers...)
}
Salin selepas log masuk

dan (*kumpulan).dapatkan:

// get registers a route for get methods that requests a representation
// of the specified resource. requests using get should only retrieve data.
func (grp *group) get(path string, handlers ...handler) router {
    grp.add(methodhead, path, handlers...)
    return grp.add(methodget, path, handlers...)
}
Salin selepas log masuk

Tiada cara untuk menghentikan tingkah laku ini. Apa yang anda boleh lakukan ialah mengelak daripada menggunakannya dan gunakan laluan add 方法。例如,注册一个 get secara terus, seperti ini:

app.add(fiber.methodget, "/", func(c *fiber.ctx) error {
    return c.sendstring("hello, world!")
})
Salin selepas log masuk

Sila ambil perhatian bahawa (*app).use dan (*kumpulan).use sepadan dengan semua kata kerja http. Anda boleh memadam head seperti ini:

methods := make([]string, 0, len(fiber.defaultmethods)-1)
for _, m := range fiber.defaultmethods {
    if m != fiber.methodhead {
        methods = append(methods, m)
    }
}
app := fiber.new(fiber.config{
    requestmethods: methods,
})
Salin selepas log masuk

NOTA: Setiap kali laluan head 路由,它就会出现恐慌,因为它不包含在 requestmethods didaftarkan, ia akan panik kerana ia tidak termasuk dalam kaedah permintaan.

Saya tidak tahu mengapa anda melakukan ini. Mungkin pilihan yang lebih baik ialah menggunakan perisian tengah untuk menafikan semua head ​​permintaan seperti ini:

app.Use(func(c *fiber.Ctx) error {
    if c.Method() == fiber.MethodHead {
        c.Status(fiber.StatusMethodNotAllowed)
        return nil
    }
    return c.Next()
})
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk menghalang Fiber daripada mendaftarkan laluan HEAD secara automatik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!