Ich möchte eine HTTP-Antwort mit multipart/mixed erstellen, aber ich bin mir nicht sicher, welche Browser es unterstützen; und wenn es so bequem ist wie es klingt, aus der Sicht des Kunden. Um ehrlich zu sein, brauche ich nicht speziell diesen Inhaltstyp. Ich möchte nur mehr als eine Datei in der gleichen Antwort übertragen; vielleicht gibt es einen anderen Inhaltstyp, der mehr verwendet wird.Browser-Unterstützung von Multipart-Antworten
Antwort
Ich habe es getestet, mit einem hausgemachten Server und einer einfachen Antwort. Nicht sicher, ob die Antwort wohlgeformt ist, weil kein Browser es 100% OK versteht. Aber hier sind die Ergebnisse:
- Firefox 3.5: Renders nur der letzte Teil, alle anderen werden ignoriert.
- IE 8: Zeigt den gesamten Inhalt als wäre es text/plain, einschließlich der Grenzen.
- Chrome 3: Speichert den gesamten Inhalt in einer einzigen Datei, nichts wird gerendert.
- Safari 4: Speichert den gesamten Inhalt in einer einzigen Datei, nichts wird gerendert.
- Opera 10.10: Etwas seltsam. Startet das Rendern des ersten Teils als einfachen/Text und löscht dann alles. Der Ladefortschrittsbalken hängt bei 31%.
Hier ist die vollständige Antwort, wenn jemand einen Fehler findet, bitte sagen Sie mir, und ich werde versuchen Sie es erneut:
HTTP/1.1 200 OK
Date: Tue, 01 Dec 2009 23:27:30 GMT
Vary: Accept-Encoding,User-Agent
Content-Length: 681
Content-Type: Multipart/mixed; boundary="sample_boundary";
Multipart not supported :(
--sample_boundary
Content-Type: text/css; charset=utf-8
Content-Location: http://localhost:2080/file.css
body
{
background-color: yellow;
}
--sample_boundary
Content-Type: application/x-javascript; charset=utf-8
Content-Location: http://localhost:2080/file.js
alert("Hello from a javascript!!!");
--sample_boundary
Content-Type: text/html; charset=utf-8
Content-Base: http://localhost:2080/
<html>
<head>
<link rel="stylesheet" href="http://localhost:2080/file.css">
</head>
<body>
Hello from a html
<script type="text/javascript" src="http://localhost:2080/file.js"></script>
</body>
</html>
--sample_boundary--
Ich bin mir nicht sicher, wo du falsch gelaufen bist, aber ich habe es 2006 in Firefox implementiert und es hat gut funktioniert. – kybernetikos
Wenn Sie ein Beispiel haben, bitte senden Sie es :) Danke! –
für Knoten: ff funktioniert gut, Chrom scheint ein Rahmen hinter zu sein: '' 'var boundary =" XXMIMEBOUNDARY "; var Abschnitt = 0; Funktion writeSection (res) {var a = (Abschnitt ++); console.log ("Schreiben", a); res.write ("Inhaltstyp: text/plain \ n \ n"); res.write ("Abschnitt" + a); res.write ("-" + Grenze + "\ n");}; require ('http'). createServer (Funktion (req, res)) {console.log ('empfangene Anfrage'); res.writeHead (200, {"Inhaltstyp": 'multipart/x-mixed-replace; boundary = "} + Grenze + '"'}); writeSection (res); setInterval (Funktion() {writeSection (res);}, 2500);}). listen (8080); '' ' – kybernetikos
In meiner Erfahrung, mehrteiliger Reaktionen in Firefox arbeiten, aber nicht in Internet Explorer. Dies war vor 2 Jahren, mit den Browsern der Zeit.
Ich hatte HTTP Multipart Antworten für einen Strom von JPEG-Bildern. Zum Beispiel verwenden Axis IP-Kameras für ihre Bewegung JPEG-Stream für Firefox. Für den Internet Explorer erfordert Axis die Verwendung eines Plugins.
Wenn Firefox-only-Unterstützung Ihre Anforderungen erfüllt, dann empfehle ich, den Content-Length-Header in jedem Teil der mehrteiligen Antwort festzulegen. Es kann hilfreich sein, die Grenzzeichenfolge im ursprünglichen HTTP-Header und in der mehrteiligen Antwort identisch zu machen (das '-' fehlt im HTTP-Header).
Zwei Ideen:
- Formatierung: Ich denke, „multipart“ in Kleinbuchstabe sein sollte, und ich glaube nicht, ein Semikolon am Ende der Content-Type-Header zu erwarten ist (obwohl es zweifelhaft ist, dass Es wird einen Unterschied machen, möglicherweise ist es möglich).
- Haben Sie den Ersetzungsmodus versucht? Verwenden Sie einfach:
Content-type: multipart/x-mixed-replace
- alles andere sollte gleich bleiben.
Es gibt einen großen semantischen Unterschied zwischen 'multipart/mixed' und' multipart/x-mixed-replace'. Es ist nicht wahrscheinlich, dass irgendein Browser "multipart/mixed" unterstützt, da es einfach nicht von echten Servern verwendet wird. 'multipart/x-mixed-replaced' hat einige Unterstützung, da einige Server es für das serverseitige Pushing verwenden, wie für das Streaming von Medien. Die einzigen anderen "multipart/..." -Typen, die üblicherweise bei HTTP verwendet werden, sind "multipart/form-data" und "multipart/byteranges". –
- 1. Ember.js Browserunterstützung?
- 2. Browserunterstützung PNG-Transparenz
- 3. jQuery erkennt, ob Browserunterstützung Zoom
- 4. Wie überprüfe ich die Browserunterstützung für AngularJS?
- 5. JavaScript: Browserunterstützung vs. reine Sprachunterstützung: setTimeout, setInterval
- 6. Verwenden von Modernizr zum Testen der Browserunterstützung für css calc()
- 7. Erkennen der Browserunterstützung für HTML Media Capture
- 8. Stimmt etwas mit meiner srcset-Definition nicht oder ist die aktuelle Browserunterstützung nur schwach?
- 9. Javascript-Fallback für Eingabetyp = "Datum" hinzufügen, wenn Browserunterstützung nicht verfügbar ist
- 10. Gibt es Unterschiede in der Browserunterstützung für <a> Link ellement mit display: block;
- 11. Marginale Browserunterstützung durch die BBC (und warum die BBC sie nicht jQuery verwenden kann)
- 12. Optionen zum Produzieren von Audio mit GWT
- 13. Wie konvertiert man ein Set in ein Array in Chrome?
- 14. Web Storage (session und local) in Private-Browsing-Modus (inkognito)
- 15. document.getElements() Unterstützung
- 16. Relative URL, die nur den Querystring enthält
- 17. Soll ich POST verwenden oder Verb DELETE in jQuery.ajax() Funktion
- 18. So wählen Sie den Inhaltstyp aus HTTP Akzeptieren Header in PHP
- 19. Variable Dimension Fluid Bilder, vertikal und horizontal zentriert
- 20. Lesen von Daten von außerhalb erstellt von
- 21. Entfernen von Padding von Iframe von Seite
- 22. Herunterladen von Datei von Umleiten von URLs
- 23. von. import * von Modul
- 24. Senden von XML von SUDS
- 25. Abrufen von JSONObject von String
- 26. Abrufen von NSManagedObjectContext von NSManagedObject
- 27. Wiederholen von IDs von Elementkindern
- 28. Senden von Broadcasts von asynctasks
- 29. Manipulation von ByteBuffer von JNI
- 30. Geben von Daten von Javascript
Ich kann keine gute Informationen über Google finden, so dass Sie es nicht getestet zu werden - eine einfache Seite bauen, die als mehrteiliger gesendet wird - Test in verschiedenen Browsern lassen - hier :) Ergebnisse (Diese Seite ist das zweite Ergebnis in Google bei der Suche nach diesem) –
Wenn die Dateien miteinander verwandt sind, z. B. Ressourcen eines Stammdokuments, versuchen Sie 'multipart/related'. –