Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menghalang Fiber daripada mendaftarkan laluan HEAD secara automatik?

Bagaimana untuk menghalang Fiber daripada mendaftarkan laluan HEAD secara automatik?

WBOY
WBOYke hadapan
2024-02-06 09:33:03450semak imbas

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...)
}

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...)
}

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!")
})

Sila ambil perhatian bahawa (*app).use a> 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,
})

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()
})

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam