Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengkonfigurasi Peranti Tengah CORS dalam Go Gin dengan Betul untuk Mengendalikan Permintaan OPTIONS?

Bagaimana untuk Mengkonfigurasi Peranti Tengah CORS dalam Go Gin dengan Betul untuk Mengendalikan Permintaan OPTIONS?

Susan Sarandon
Susan Sarandonasal
2024-12-21 03:10:09464semak imbas

How to Properly Configure CORS Middleware in Go Gin to Handle OPTIONS Requests?

Mendayakan CORS dalam Rangka Kerja Go Gin

Rangka kerja Go gin menyediakan perisian tengah yang berkuasa untuk membolehkan CORS (Perkongsian Sumber Silang Asal) dalam anda aplikasi. Dengan menambahkan perisian tengah ini pada apl anda, anda boleh membenarkan permintaan daripada asal yang berbeza untuk mengakses titik akhir API anda.

Pertimbangkan pelaksanaan perisian tengah CORS berikut:

func CORSMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        c.Writer.Header().Set("Content-Type", "application/json")
        c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
        c.Writer.Header().Set("Access-Control-Max-Age", "86400")
        c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE")
        c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, X-Max")
        c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")

        if c.Request.Method == "OPTIONS" {
            c.AbortWithStatus(200)
        } else {
            c.Next()
        }
    }
}

Walau bagaimanapun, jika menggunakan hasil perisian tengah ini dalam kod status 200 OK tetapi tiada tindakan lanjut selepas permintaan OPTION, anda mungkin telah terlepas perkara penting langkah:

Betulkan:

func CORSMiddleware() gin.HandlerFunc {

return func(c *gin.Context) {
    c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
    c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
    c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With")
    c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT")

    if c.Request.Method == "OPTIONS" {
        c.AbortWithStatus(204)
        return
    }

    c.Next()
}

}

Dalam perisian tengah yang dikemas kini, c.AbortWithStatus(204) akan mengembalikan status respons 204 Tiada Kandungan tanpa sebarang badan, menunjukkan permintaan OPTIONS berjaya dan membenarkan pelanggan meneruskan permintaan sebenar.

Atas ialah kandungan terperinci Bagaimana untuk Mengkonfigurasi Peranti Tengah CORS dalam Go Gin dengan Betul untuk Mengendalikan Permintaan OPTIONS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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
Artikel sebelumnya:Memperkenalkan penjana ID CLIArtikel seterusnya:Memperkenalkan penjana ID CLI