Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menghantar Permintaan GET dengan Betul dengan Slash Berkod URL?

Bagaimana untuk Menghantar Permintaan GET dengan Betul dengan Slash Berkod URL?

Susan Sarandon
Susan Sarandonasal
2024-12-31 09:38:10965semak imbas

How to Correctly Send GET Requests with URL-Encoded Slashes?

Menghantar Permintaan GET dengan Garis miring Berkod URL

Apabila cuba menghantar permintaan GET ke URL yang mengandungi garis miring berkod URL (cth. , http://example.com//), anda mungkin menghadapi masalah apabila klien web menterjemahkannya kepada URL yang tidak sah (cth., http://example.com//).

Untuk menyelesaikan isu ini, kod berikut menyediakan penyelesaian dengan memaksa laluan dan pertanyaan dianggap sebagai berkanun:

Uri uri = new Uri("http://example.com/%2F");
ForceCanonicalPathAndQuery(uri);
using (WebClient webClient = new WebClient())
{
  webClient.DownloadData(uri);
}

void ForceCanonicalPathAndQuery(Uri uri){
  string paq = uri.PathAndQuery; // need to access PathAndQuery
  FieldInfo flagsFieldInfo = typeof(Uri).GetField("m_Flags", BindingFlags.Instance | BindingFlags.NonPublic);
  ulong flags = (ulong) flagsFieldInfo.GetValue(uri);
  flags &= ~((ulong) 0x30); // Flags.PathNotCanonical|Flags.QueryNotCanonical
  flagsFieldInfo.SetValue(uri, flags);
}

Skrip ini berfungsi dengan memanipulasi bendera dalaman objek Uri, memastikan ia menganggap laluan dan pertanyaan sebagai kanonik, tidak memerlukan sebarang transformasi lanjut semasa permintaan.

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Permintaan GET dengan Betul dengan Slash Berkod URL?. 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