masalah pengalihan permintaan golang (ralat berlebihan)
Apabila menggunakan golang untuk membuat permintaan rangkaian, anda mungkin kadangkala menghadapi masalah pengalihan permintaan. Masalah ini mungkin disebabkan oleh ralat berlebihan. Editor PHP Xigua akan memberitahu anda cara menyelesaikan masalah ini untuk memastikan kelancaran kemajuan permintaan rangkaian. Mari lihat!
Isi soalan
Saya mendapat perangai yang sangat pelik dari golang.
Saya ingin melakukan sesuatu dengan permintaan siaran dan kemudian mengubah hala permintaan itu. Bergantung pada faktor rawak...sama ada berkesan atau tidak.
Apabila ia tidak berfungsi, saya mendapat ralat ini:
"http: respons berlebihan. Panggilan WriteHeader daripada..."
Lebih mendalam fungsi, semakin kecil kemungkinan pengalihan akan berfungsi.
- Setahu saya, saya hanya mengubah hala sekali (atau sifar kali...)
- Saya tidak menulis pengepala sebelum mengubah hala.
- Satu-satunya perkara yang saya lakukan kepada penulis sebelum mengubah hala ialah meletakkannya ke dalam peta.
Saya tidak mahu menyalin semua kod di sini, jadi saya akan meringkaskannya.
Pengendali mengendalikan permintaan POST, menghantar data permintaan dalam peta bernama demand
.
Kemudian parse permintaan untuk mendapatkan nilai borang dan simpan ke dalam demand
Ia dihantar ke saluran.
Graf permintaan dihantar dari saluran ke fungsi berikut:
func answer_login(demand map[string]any) map[string]any { writer := demand["writer"].(http.ResponseWriter) request := demand["request"].(*http.Request) http.Redirect(writer, request, "/", 302) // <- if it is here it works (at95 %) // some mundane code (printing stuff, really) . . . // http.Redirect(writer, request, "/", 302) // <- if it is here it works (only at 20 %) ...
Jika saya tekan F5, ia akhirnya mengubah hala dengan betul.
Saya cuba menulis sesuatu dalam writer.Write([]byte("same issues"))
, masalah yang sama.
Saya menggunakan Linux dan telah mencuba pelayar yang berbeza.
Soalan: Adakah ini pepijat (yang diketahui)?
Adakah terdapat sebarang penyelesaian?
(Tulis paksa kepada pelanggan)
Terima kasih
Penyelesaian
Saya akhirnya memahami masalah dan menemui penyelesaian.
Soalan:
Oleh itu, permintaan penulis diproses dan diubah hala dalam fungsi skop yang berbeza daripada fungsi pemprosesan sebenar. Dan apabila fungsi sebenarpengendali tamat. Faktor kontekstual tertentu menyebabkan permintaan penulis tamat tempoh: anda tidak boleh mengubah hala atau membalas permintaan itu lagi. Inilah yang dikatakan dalam dokumentasi:
https://pkg.go.dev/net/http p>
Satu penjelasan yang mungkin mengapa ia kadangkala berfungsi ialah... mungkin "pemindahan saluran, pemprosesan dan pengalihan" berlaku dengan cukup pantas (kadangkala) dan fungsi pengendali sebenar belum ditutup lagi.
Menyekat fungsi pengendali sebelum memproses data mengalahkan tujuan pemprosesan tak segerak selari. Jadi saya akhirnya meletakkan segala-galanya di dalam fungsi pengendali.
Orang pintar dialu-alukan untuk membetulkan saya atau berkongsi penjelasan yang lebih baik tentang konteks dan ResponseWriter.
Atas ialah kandungan terperinci masalah pengalihan permintaan golang (ralat berlebihan). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas





typedef struct digunakan dalam bahasa C untuk mencipta alias jenis struktur untuk memudahkan penggunaan struktur. Ia alias jenis data baharu kepada struktur sedia ada dengan menentukan alias struktur. Faedah termasuk kebolehbacaan yang dipertingkatkan, penggunaan semula kod dan pemeriksaan jenis. Nota: Struktur mesti ditakrifkan sebelum menggunakan alias itu mestilah unik dalam program dan hanya sah dalam skop di mana ia diisytiharkan.

Pengecualian nilai jangkaan pembolehubah dalam Java boleh diselesaikan dengan: memulakan pembolehubah menggunakan nilai nol menggunakan semakan dan tugasan;

Kelebihan penutupan JavaScript termasuk mengekalkan skop pembolehubah, membolehkan kod modular, pelaksanaan tertunda, dan keburukan pengendalian peristiwa termasuk kebocoran memori, peningkatan kerumitan, overhed prestasi dan kesan rantaian skop.

Arahan prapemproses #include dalam C++ memasukkan kandungan fail sumber luaran ke dalam fail sumber semasa, menyalin kandungannya ke lokasi yang sepadan dalam fail sumber semasa. Digunakan terutamanya untuk memasukkan fail pengepala yang mengandungi pengisytiharan yang diperlukan dalam kod, seperti #include <iostream> untuk memasukkan fungsi input/output standard.

Kitaran hayat penunjuk pintar C++: Penciptaan: Penunjuk pintar dicipta apabila memori diperuntukkan. Pemindahan pemilikan: Pindahkan pemilikan melalui operasi pemindahan. Keluaran: Memori dikeluarkan apabila penunjuk pintar keluar dari skop atau dikeluarkan secara eksplisit. Pemusnahan objek: Apabila objek runcing dimusnahkan, penunjuk pintar menjadi penunjuk tidak sah.

boleh. C++ membenarkan definisi dan panggilan fungsi bersarang. Fungsi luaran boleh menentukan fungsi terbina dalam, dan fungsi dalaman boleh dipanggil terus dalam skop. Fungsi bersarang meningkatkan enkapsulasi, kebolehgunaan semula dan kawalan skop. Walau bagaimanapun, fungsi dalaman tidak boleh mengakses pembolehubah tempatan fungsi luaran secara langsung, dan jenis nilai pulangan mesti konsisten dengan pengisytiharan fungsi luaran Fungsi dalaman tidak boleh rekursif sendiri.

Dalam Vue, terdapat perbezaan dalam skop apabila mengisytiharkan pembolehubah antara let dan var: Skop: var mempunyai skop global dan let mempunyai skop peringkat blok. Skop peringkat blok: var tidak mencipta skop peringkat blok, mari buat skop peringkat blok. Pengisytiharan Semula: var membenarkan pembolehubah diisytiharkan semula dalam skop yang sama, jangan biarkan.

Dalam JavaScript, jenis penunjuk ini termasuk: 1. Objek global 2. Panggilan fungsi; 4. Pengendali acara; Selain itu, penunjuk kepada ini boleh ditetapkan secara eksplisit menggunakan kaedah bind(), call(), dan apply().
