Heim > Backend-Entwicklung > C++ > Wie kann ich wörtliche Schrägstriche in URL-codierten HTTP-GET-Anfragen beibehalten?

Wie kann ich wörtliche Schrägstriche in URL-codierten HTTP-GET-Anfragen beibehalten?

Susan Sarandon
Freigeben: 2024-12-31 11:19:14
Original
849 Leute haben es durchsucht

How Can I Preserve Literal Slashes in URL-Encoded HTTP GET Requests?

Codierung von URLs: Beibehaltung des wörtlichen Schrägstrichs in HTTP-GETs

Bei HTTP-GET-Anfragen ist die URL-Codierung entscheidend für die Übertragung von Sonderzeichen nicht Teil des Standardzeichensatzes. Wenn ein URL-Pfad jedoch einen Schrägstrich (/) enthält, übersetzen bestimmte GET-Implementierungen ihn automatisch in die Syntax mit doppeltem Schrägstrich (//). Dies kann bei der Übertragung von URL-codierten Schrägstrichen problematisch sein, da diese für die Einhaltung von Protokollen wie OCSP über HTTP/GET unerlässlich sind.

Der folgende Codeausschnitt veranschaulicht das Problem:

using (WebClient webClient = new WebClient())
{
  webClient.DownloadData("http://example.com/%2F");
}
Nach dem Login kopieren

Die eigentliche an den Server gesendete Anfrage lautet jedoch:

GET // HTTP/1.1
Host: example.com
Connection: Keep-Alive
Nach dem Login kopieren

Um den wörtlichen Schrägstrich in HTTP-GETs beizubehalten, ist eine Gewohnheit erforderlich Lösung ist erforderlich. Hier ist ein Codeausschnitt, der das Uri-Objekt ändert, um den Pfad und die Abfrage beizubehalten:

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);
}
Nach dem Login kopieren

Durch die Änderung des Uri-Objekts wird der Pfad gezwungen, in seinem ursprünglichen Zustand zu bleiben, wodurch sichergestellt wird, dass der wörtliche Schrägstrich erhalten bleibt die GET-Anfrage. Diese Lösung ermöglicht die konforme Implementierung von Protokollen, die URL-codierte Schrägstriche erfordern.

Das obige ist der detaillierte Inhalt vonWie kann ich wörtliche Schrägstriche in URL-codierten HTTP-GET-Anfragen beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage