Saya mencari cara yang cepat, mudah dan dapat diandalkan untuk mendapatkan Perujuk HTTP browser di ASP.Net ( C # ). Aku tahu HTTP Perujuk itu sendiri tidak dapat diandalkan, tapi saya ingin cara yang dapat diandalkan untuk mendapatkan pengarah jika ini hadir.
c#
asp.net
http
http-headers
http-referer
Chuck Le Butt
sumber
sumber
Jawaban:
Anda dapat menggunakan properti UrlReferrer dari permintaan saat ini:
Ini akan membaca header HTTP Referer dari permintaan yang mungkin atau mungkin tidak disediakan oleh klien (agen pengguna).
sumber
Request.UrlReferrer
setelah postback sisi server. Tentu sajaRequest.UrlReferrer
sekarang akan memiliki nilai halaman yang Anda posting kembali. Dalam banyak kasus, orang membutuhkan halaman sebelumnya. Dalam kasus ini, pastikan Anda menyimpan halaman sebelumnya, katakanlah variabel kondisi tampilan saat halaman pertama kali dimuat. Dan kemudian ketika Anda mengakses variabel ini, ia memiliki halaman sebelumnya tempat Anda berasal. Misalnya, dalam acara pemuatan halaman formulir asp.net Anda dapat melakukan:if (Request.UrlReferrer != null) ViewState["PreviousPageUrl"] = Request.UrlReferrer.ToString();
Response.Redirect(ViewState["PreviousPageUrl"] != null ? ViewState["PreviousPageUrl"].ToString() : "SomeOtherPage.aspx");
Gunakan
Request.UrlReferrer
properti.Di bawah layar itu hanya memeriksa
ServerVariables("HTTP_REFERER")
properti.sumber
UrlReferrer
melakukan lebih dari sekedar panggilan sederhana keServerVariables("HTTP_REFERER")
ServerVariables["HTTP_REFERER"]
mengembalikan string , sedangkanRequest.UrlReferrer
mengembalikan Uri .Penjelasan
The
Request.UrlReferer
properti akan melemparSystem.UriFormatException
jika referal HTTP header kelainan bentuk (yang bisa terjadi karena tidak biasanya di bawah kendali Anda).Adapun penggunaan
Request.ServerVariables
, per MSDN:Request.ServerVariables Collection
Request.Headers Property
Request.Headers
adalah pilihan yang lebih baik daripadaRequest.ServerVariables
, karenaRequest.ServerVariables
berisi semua variabel lingkungan serta header, di manaRequest.Headers
daftar yang lebih pendek yang hanya berisi header.Jadi solusi terbaik adalah menggunakan
Request.Headers
collection untuk membaca nilainya secara langsung. Perhatikan peringatan Microsoft tentang pengkodean nilai HTML jika Anda akan menampilkannya di formulir.sumber
Referer
tajuk dieja secara berbeda dariHTTP_REFERRER
variabel server.Seperti ini: HttpRequest.UrlReferrer Property
sumber
Saya menggunakan .Net Core 2 mvc, yang ini berfungsi untuk saya (untuk mendapatkan halaman pratinjau):
sumber
Karena Google membawa Anda ke posting ini ketika mencari,
C# Web API Referrer
inilah kesepakatannya:Web API
menggunakan jenis yang berbedaRequest
dari yang biasaMVC Request
disebutHttpRequestMessage
yang tidak termasukUrlReferrer
. KarenaWeb API
permintaan normal tidak menyertakan informasi ini, jika Anda benar-benar membutuhkannya, Anda harus meminta klien Anda untuk memasukkannya. Meskipun Anda bisa menjadikan ini bagian dari AndaAPI Object
, cara yang lebih baik adalah dengan menggunakannyaHeaders
.Pertama, Anda dapat memperluas
HttpRequestMessage
untuk memberikanUrlReferrer()
metode:Kemudian klien Anda perlu menyetel
Referrer Header
keAPI Request
:Dan sekarang
Web API Request
termasuk data perujuk yang dapat Anda akses seperti ini dariWeb API
:sumber
sumber
Terkadang Anda harus memberikan semua tautan seperti ini
(dalam opsi saat "Saat Ini" tidak ditemukan)
sumber
Milik balasan lain, saya telah menambahkan klausul kondisi untuk mendapatkan null.
sumber