API-Einstellungen und -Entfernungen in Chrome 50

In fast jeder Version von Chrome gibt es eine beträchtliche Anzahl von Updates und Verbesserungen des Produkts, seiner Leistung und auch der Funktionen der Webplattform.

In Chrome 50 (geschätztes Betaprogramm: 10. bis 17. März) gibt es eine Reihe von Änderungen an Chrome. Diese Liste kann sich jederzeit ändern.

AppCache für unsichere Kontexte verworfen

Zusammenfassung: Um Cross-Site-Scripting zu verhindern, stellen wir AppCache für unsichere Ursprünge ein. Wir gehen davon aus, dass es in Chrome 52 nur bei Ursprüngen funktioniert, die Inhalte über HTTPS bereitstellen.

Entfernungsabsicht | Chromestatus-Tracker | Chromium-Fehler

AppCache ist eine Funktion, die den Offline- und dauerhaften Zugriff auf einen Ursprung ermöglicht. Dies ist eine leistungsstarke Rechteausweitung für einen Cross-Site-Scripting-Angriff. Im Rahmen einer größeren Bemühung, leistungsstarke Features für unsichere Ursprünge zu entfernen.

Chrome entfernt diesen Angriffsvektor, indem er ihn nur über HTTPS zulässt. Wir stellen die HTTP-Unterstützung in Chrome 50 ein und planen, sie in Chrome 52 vollständig zu entfernen.

„Document.defaultCharset“ wurde entfernt

Zusammenfassung: document.defaultCharset wurde entfernt, um die Einhaltung von Spezifikationen zu verbessern.

Entfernungsabsicht | Chromestatus-Tracker | CRBug-Problem

Das in Chrome 49 eingestellte document.defaultCharset ist eine schreibgeschützte Eigenschaft, die die Standardzeichencodierung des Nutzersystems basierend auf seinen regionalen Einstellungen zurückgibt. Es hat sich nicht als nützlich erwiesen, diesen Wert beizubehalten, da Browser die Zeichencodierungsinformationen in der HTTP-Antwort oder im Meta-Tag verwenden, das in die Seite eingebettet ist.

Verwenden Sie stattdessen document.characterSet, um den ersten Wert abzurufen, der im HTTP-Header angegeben ist. Ist dieser Wert nicht vorhanden, erhalten Sie den Wert, der im Attribut charset des Elements <meta> angegeben ist (z. B. <meta charset="utf-8">). Wenn keine dieser Einstellungen verfügbar ist, wird document.characterSet als Systemeinstellung des Nutzers verwendet.

Weitere Informationen zu der Begründung, dass Sie dies nicht angeben sollten, finden Sie in diesem GitHub-Problem.

TL;DR: Die Unterstützung für den subresource-Wert für das Attribut rel von HTMLLinkElement wird entfernt.

Entfernungsabsicht | Chromestatus-Tracker | Chromium-Fehler

Das Attribut subresource auf <link> sollte eine Ressource bei Inaktivität eines Browsers vorab abrufen. Nachdem ein Browser eine Seite heruntergeladen hatte, konnten Ressourcen wie andere Seiten vorab heruntergeladen werden, sodass sie bei Anforderung von Nutzern einfach aus dem Browser-Cache abgerufen werden konnten.

Beim Attribut subresource sind mehrere Probleme aufgetreten. Erstens hat es nie wie beabsichtigt funktioniert. Die referenzierten Ressourcen wurden mit niedriger Priorität heruntergeladen. Das Attribut wurde nur in Chrome in keinem anderen Browser implementiert. Bei der Chrome-Implementierung ist ein Fehler aufgetreten, durch den Ressourcen zweimal heruntergeladen wurden.

Entwickler, die die Nutzerfreundlichkeit durch Vorabladen von Inhalten verbessern möchten, haben eine Reihe von Optionen. Die individuellste Möglichkeit besteht darin, einen Service Worker zu erstellen, der das Precaching und die Caches API nutzt. Weitere Lösungen umfassen andere Werte für das Attribut rel, einschließlich preconnect, prefetch, preload und prerender. Einige dieser Optionen befinden sich noch in der Entwicklungsphase und werden möglicherweise nicht umfassend unterstützt.

Unsicheres TLS-Versions-Fallback entfernen

TL;DR: Entfernen Sie einen Mechanismus, der Server zwingt, Daten mit weniger oder nicht sicheren TLS-Versionen zurückzugeben.

Entfernungsabsicht | Chromestatus-Tracker | Chromium-Fehler

Transport Layer Security (TLS) unterstützt einen Mechanismus zum Aushandeln von Versionen, was die Einführung neuer TLS-Versionen ermöglicht, ohne die Kompatibilität zu beeinträchtigen. Einige Server haben dies so implementiert, dass Browser unsichere Endpunkte als Fallback verwenden mussten. Aus diesem Grund können Angreifer alle Websites – nicht nur falsch konfigurierte – dazu zwingen, schwächere Versionen von TLS auszuhandeln.

Betroffene Websites können keine Verbindung mit ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION herstellen. Administratoren müssen dafür sorgen, dass ihre Serversoftware auf dem neuesten Stand ist. Wenn das Problem weiterhin besteht, wenden Sie sich an den Anbieter der Serversoftware, um zu erfahren, ob eine Lösung verfügbar ist.

KeyboardEvent.prototype.keyLocation entfernen

TL;DR: Entfernen Sie einen nicht benötigten Alias für das Attribut Keyboard.prototype.location.

Entfernungsabsicht | Chromestatus-Tracker | Chromium-Fehler

Dieses Attribut ist einfach ein Alias für das Attribut Keyboard.prototype.location, mit dem Tasten unterschieden werden können, die sich an mehreren Stellen auf einer Tastatur befinden. Mit beiden Attributen können Entwickler beispielsweise zwischen den beiden Enter-Tasten auf einer erweiterten Tastatur unterscheiden.

In RTCPeerConnection-Methoden erforderliche Fehler- und Erfolgs-Handler

TL;DR: Die WebRTC-RTCPeerConnection-Methoden createOffer() und createAnswer() erfordern jetzt einen Fehler-Handler sowie einen Erfolgs-Handler. Bisher konnten diese Methoden nur mit einem Erfolgs-Handler aufgerufen werden. Diese Nutzung wurde eingestellt.

Entfernungsabsicht | Chromestatus-Tracker | Chromium-Fehler

In Chrome 49 haben wir eine Warnung hinzugefügt, wenn Sie setLocalDescription() oder setRemoteDescription() ohne Angabe eines Fehler-Handlers aufrufen. Das Fehler-Handler-Argument ist ab Chrome 50 obligatorisch.

Das macht den Weg für die Einführung von Promise für diese Methoden, wie es in der WebRTC-Spezifikation gefordert wird.

Hier ist ein Beispiel aus der WebRTC-RTCPeerConnection-Demo (main.js, Zeile 126):

    function onCreateOfferSuccess(desc) {
      pc1.setLocalDescription(desc, function() {
         onSetLocalSuccess(pc1);
      }, onSetSessionDescriptionError);
      pc2.setRemoteDescription(desc, function() {
        onSetRemoteSuccess(pc2);
      }, onSetSessionDescriptionError);
      pc2.createAnswer(onCreateAnswerSuccess, onCreateSessionDescriptionError);
    }

Sowohl setLocalDescription() als auch setRemoteDescription() haben einen Fehler-Handler. Ältere Browser, die nur einen Erfolgs-Handler erwarten, ignorieren einfach das Fehler-Handler-Argument, sofern es vorhanden ist. Das Aufrufen dieses Codes in einem älteren Browser verursacht keine Ausnahme.

Im Allgemeinen empfehlen wir für WebRTC-Produktionsanwendungen die Verwendung von adapter.js, einem vom WebRTC-Projekt verwalteten Shim, um Anwendungen vor Spezifikationsänderungen und Präfixunterschieden zu isolieren.

XMLHttpRequestProgressEvent wird nicht mehr unterstützt

TL;DR: Die XMLHttpRequestProgressEvent-Schnittstelle wird zusammen mit den Attributen position und totalSize entfernt.

Entfernungsabsicht | Chromestatus-Tracker | Chromium-Fehler

Dieses Ereignis existierte, um die Gecko-Kompatibilitätseigenschaften position und totalSize zu unterstützen. Die Unterstützung für alle drei wurde in Mozilla 22 eingestellt und die Funktionalität wurde lange durch ProgressEvent ersetzt.

     var progressBar = document.getElementById("p"),
          client = new XMLHttpRequest()
      client.open("GET", "magical-unicorns")
      client.onprogress = function(pe) {
        if(pe.lengthComputable) {
          progressBar.max = pe.total
          progressBar.value = pe.loaded
        }
      }

Vorangestellte verschlüsselte Medienerweiterungen entfernen

TL;DR: Vorangestellte verschlüsselte Medienerweiterungen wurden zugunsten einer spezifikationsbasierten Ersetzung ohne Präfix entfernt.

Entfernungsabsicht | Chromestatus-Tracker | Chromium-Fehler

In Chrome 42 haben wir eine spezifikationsbasierte Version ohne Präfix für verschlüsselte Medienerweiterungen ausgeliefert. Diese API wird verwendet, um Digital Rights Management-Systeme zur Verwendung mit HTMLMediaElement zu erkennen, auszuwählen und mit ihnen zu interagieren.

Das war vor fast einem Jahr. Da die Version ohne Präfix mehr Funktionen hat als die mit dem Präfix versehene Version, ist es an der Zeit, die Version der API mit dem Präfix zu entfernen.

Unterstützung für SVGElement.offset-Eigenschaften entfernen

TL;DR: Die Offset-Eigenschaften für SVGElement wurden zugunsten der allgemein unterstützten Eigenschaften von HTMLElement entfernt.

Entfernungsabsicht | Chromestatus-Tracker | Chromium-Fehler

Offset-Eigenschaften werden schon lange von HTMLElement und SVGElement unterstützt. Gecko und Edge unterstützen sie jedoch nur für HTMLElement. Um die Konsistenz zwischen den Browsern zu verbessern, wurden diese Eigenschaften in Chrome 48 eingestellt und werden jetzt entfernt.

Äquivalente Attribute sind zwar Teil von HTMLElement, Entwickler, die nach einer Alternative suchen, können aber auch getBoundingClientRect() verwenden