Heim >Backend-Entwicklung >C++ >Wie sende ich GET-Anfragen mit URL-codierten Schrägstrichen korrekt?

Wie sende ich GET-Anfragen mit URL-codierten Schrägstrichen korrekt?

Susan Sarandon
Susan SarandonOriginal
2024-12-31 09:38:10965Durchsuche

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

GET-Anfragen mit URL-kodierten Schrägstrichen senden

Beim Versuch, eine GET-Anfrage an eine URL zu senden, die einen URL-kodierten Schrägstrich enthält (z. B. , http://example.com//), kann es zu einem Problem kommen, bei dem der Webclient die URL in eine ungültige URL übersetzt (z. B. http://example.com//).

Um dieses Problem zu beheben, bietet der folgende Code eine Problemumgehung, indem er erzwingt, dass der Pfad und die Abfrage als kanonisch behandelt werden:

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);
}

Dies Das Skript manipuliert die internen Flags des Uri-Objekts und stellt so sicher, dass es den Pfad und die Abfrage als kanonisch behandelt und keine weiteren Transformationen während der Anfrage erfordert.

Das obige ist der detaillierte Inhalt vonWie sende ich GET-Anfragen mit URL-codierten Schrägstrichen korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn