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
Lepaskan: 2024-12-21 03:10:09
asal
463 orang telah melayarinya

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()
        }
    }
}
Salin selepas log masuk

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()
}
Salin selepas log masuk

}

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 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan