golang menentukan permintaan ajax

PHPz
Lepaskan: 2023-05-10 10:49:37
asal
592 orang telah melayarinya

Dalam pembangunan Web, AJAX (Asynchronous JavaScript dan XML) telah menjadi salah satu teknologi yang sangat diperlukan. Permintaan AJAX boleh meminta data daripada pelayan secara tak segerak, dan JavaScript boleh digunakan untuk mengemas kini data tanpa menyegarkan halaman, yang meningkatkan pengalaman pengguna. Apabila menggunakan Golang untuk pembangunan web, bagaimana untuk menentukan sama ada ia adalah permintaan AJAX? Artikel ini akan memperkenalkan kaedah mudah.

Pertama sekali, anda perlu memahami atribut Pengepala dalam permintaan HTTP - X-Requested-With. Atribut ini boleh digunakan untuk menentukan sama ada permintaan semasa ialah permintaan AJAX. Apabila penyemak imbas menghantar permintaan AJAX melalui objek XMLHttpRequest, atribut X-Requested-With ditetapkan kepada XMLHttpRequest. Dalam permintaan GET atau POST biasa, atribut ini tidak akan ditetapkan.

Oleh itu, kita boleh menentukan sama ada permintaan semasa ialah permintaan AJAX dengan menentukan sama ada pengepala HTTP mengandungi atribut X-Requested-With. Di Golang, anda boleh menggunakan atribut Pengepala objek Permintaan yang disediakan oleh perpustakaan net/http untuk membaca maklumat pengepala HTTP. Berikut ialah kod sampel untuk menilai permintaan AJAX:

func ajaxHandler(w http.ResponseWriter, r *http.Request) {
    isAjax := r.Header.Get("X-Requested-With") == "XMLHttpRequest"
    if isAjax {
        fmt.Println("This is an AJAX request")
    } else {
        fmt.Println("This is a normal HTTP request")
    }
}
Salin selepas log masuk

Antaranya, r.Header.Get("X-Requested-With") digunakan untuk mendapatkan atribut X-Requested-With permintaan semasa , dan kemudian nilainya Sama ada nilainya XMLHttpRequest. Jika ya, permintaan semasa ialah permintaan AJAX dan logik pemprosesan yang sepadan dilaksanakan jika tidak, permintaan semasa ialah permintaan HTTP biasa dan logik pemprosesan lain dilaksanakan.

Perlu diambil perhatian bahawa memandangkan nama atribut dalam pengepala HTTP adalah tidak peka huruf besar-besaran, atribut X-Requested-With harus diperolehi dalam semua huruf besar, iaitu, r.Header.Get("X -Diminta- Dengan").

Selain kaedah di atas, terdapat cara yang lebih mudah untuk menilai permintaan AJAX. Apabila menggunakan rangka kerja web seperti Gorilla Web Toolkit, anda boleh terus menggunakan r.Header.Get("Content-Type") untuk menentukan sama ada atribut Content-Type ialah application/x-www-form-urlencoded. Kerana dalam permintaan HTTP tradisional, Jenis Kandungan data borang adalah application/x-www-form-urlencoded.

Untuk permintaan AJAX yang menghantar data dalam format JSON, anda perlu menentukan sama ada atribut Content-Type ialah application/json. Kod khusus adalah seperti berikut:

func ajaxHandler(w http.ResponseWriter, r *http.Request) {
    contentType := r.Header.Get("Content-Type")
    isAjax := contentType == "application/x-www-form-urlencoded" || contentType == "application/json"
    if isAjax {
        fmt.Println("This is an AJAX request")
    } else {
        fmt.Println("This is a normal HTTP request")
    }
}
Salin selepas log masuk

Di atas adalah dua kaedah untuk menilai permintaan AJAX. Perlu diingatkan bahawa kedua-dua kaedah ini tidak boleh dipercayai sepenuhnya. Dalam pembangunan sebenar, anda mungkin menghadapi beberapa permintaan AJAX tersuai (seperti mengubah suai atribut X-Requested-With dalam pengepala permintaan), yang mungkin membawa kepada ralat dalam pertimbangan. Oleh itu, pelarasan yang sewajarnya perlu dibuat mengikut situasi tertentu.

Secara amnya, kaedah menilai permintaan AJAX agak mudah Anda hanya perlu menilai berdasarkan atribut dalam pengepala HTTP. Dalam pembangunan sebenar, pelarasan yang sesuai perlu dibuat mengikut keperluan khusus untuk memenuhi keperluan perniagaan tertentu.

Atas ialah kandungan terperinci golang menentukan permintaan ajax. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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