거의 모든 버전의 Chrome에서 제품, 성능, 웹 플랫폼 기능에 대한 상당한 수의 업데이트와 개선사항이 적용됩니다.
Chrome 50 (예상 베타 날짜: 3월 10~17일)에는 Chrome에 몇 가지 변경사항이 있습니다. 이 목록은 언제든지 변경될 수 있습니다.
비보안 컨텍스트에서 AppCache 지원 중단
요약: 교차 사이트 스크립팅을 방해하기 위해 안전하지 않은 출처의 AppCache를 지원 중단할 예정입니다. Chrome 52에서는 HTTPS를 통해 콘텐츠를 제공하는 출처에서만 작동할 것으로 예상됩니다.
삭제 의도 | Chromestatus 추적기 | Chromium 버그
AppCache는 출처에 대한 오프라인 및 영구 액세스를 허용하는 기능으로, 교차 사이트 스크립팅 공격에 강력한 권한 에스컬레이션이 됩니다. 안전하지 않은 출처에서 강력한 기능을 삭제하기 위한 대규모 작업의 일환입니다.
Chrome은 HTTPS를 통해서만 허용하여 이 공격 벡터를 제거하고 있습니다. Chrome 50에서 HTTP 지원이 지원 중단되며 Chrome 52에서 완전히 삭제될 예정입니다.
Document.defaultCharset가 삭제됨
요약: 사양 준수를 개선하기 위해 document.defaultCharset
가 삭제되었습니다.
삭제 의도 | Chromestatus 추적기 | CRBug 문제
Chrome 49에서 지원 중단된 document.defaultCharset
는 지역 설정에 따라 사용자 시스템의 기본 문자 인코딩을 반환하는 읽기 전용 속성입니다. 브라우저가 HTTP 응답 또는 페이지에 삽입된 메타 태그에서 문자 인코딩 정보를 사용하는 방식으로 인해 이 값을 유지하는 것이 유용하지 않은 것으로 확인되었습니다.
대신 document.characterSet
를 사용하여 HTTP 헤더에 지정된 첫 번째 값을 가져옵니다. <meta>
요소의 charset
속성에 지정된 값 (예: <meta
charset="utf-8">
)이 없는 경우 이 값이 사용됩니다. 마지막으로 이러한 값을 사용할 수 없는 경우 document.characterSet
이 사용자의 시스템 설정이 됩니다.
이를 지정하지 않는 이유에 관한 자세한 내용은 이 GitHub 문제에서 확인하세요.
링크 요소에서 하위 리소스 속성이 삭제됨
요약: HTMLLinkElement
의 rel
속성에 대한 subresource
값 지원을 삭제합니다.
삭제 의도 | Chromestatus 추적기 | Chromium 버그
<link>의 subresource
속성의 의도는 브라우저의 유휴 시간 동안 리소스를 미리 로드하는 것이었습니다. 브라우저가 페이지를 다운로드한 후에는 다른 페이지와 같은 리소스를 미리 다운로드하여 사용자가 요청할 때 브라우저 캐시에서 간단히 가져올 수 있습니다.
subresource
속성에는 여러 문제가 있었습니다. 첫째, 의도한 대로 작동하지 않았습니다. 참조된 리소스가 우선순위가 낮게 다운로드되었습니다. 이 속성은 Chrome 이외의 브라우저에서 구현된 적이 없습니다. Chrome 구현에 리소스가 두 번 다운로드되는 버그가 있었습니다.
콘텐츠 미리 로드를 통해 사용자 환경을 개선하려는 개발자에게는 여러 옵션이 있습니다. 그중 가장 맞춤설정이 쉬운 방법은 미리 캐싱 및 Caches API를 활용하는 서비스 워커를 빌드하는 것입니다. 추가 솔루션에는 preconnect
, prefetch
, preload
, prerender
을 비롯한 rel
속성의 다른 값이 포함됩니다. 이러한 옵션 중 일부는 실험용이며 광범위하게 지원되지 않을 수 있습니다.
안전하지 않은 TLS 버전 대체 삭제
요약: 보안 수준이 낮거나 보안이 없는 버전의 TLS를 사용하여 서버가 데이터를 반환하도록 강제하는 메커니즘을 삭제합니다.
삭제 의도 | Chromestatus 추적기 | Chromium 버그
전송 계층 보안 (TLS)은 버전 협상 메커니즘을 지원하므로 호환성을 손상시키지 않고 새 TLS 버전을 도입할 수 있습니다. 일부 서버는 브라우저가 안전하지 않은 엔드포인트를 대체로 사용해야 하는 방식으로 이를 구현했습니다. 이로 인해 공격자는 잘못 구성된 웹사이트뿐만 아니라 모든 웹사이트가 더 취약한 버전의 TLS에 대해 협상하도록 할 수 있습니다.
영향을 받는 사이트는 ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION
에 연결할 수 없습니다. 관리자는 서버 소프트웨어가 최신 상태인지 확인해야 합니다. 그래도 문제가 해결되지 않으면 서버 소프트웨어 공급업체에 문의하여 해결 방법이 있는지 확인하세요.
KeyboardEvent.prototype.keyLocation 삭제
요약: Keyboard.prototype.location
속성의 불필요한 별칭을 삭제합니다.
삭제 의도 | Chromestatus 추적기 | Chromium 버그
이 속성은 단순히 Keyboard.prototype.location
속성의 별칭으로, 키보드의 여러 위치에 있는 키 간에 구분을 허용합니다. 예를 들어 두 속성을 모두 사용하면 개발자가 확장 키보드의 두 Enter
키를 구분할 수 있습니다.
RTCPeerConnection 메서드에 필요한 오류 및 성공 핸들러
요약: WebRTC RTCPeerConnection 메서드 createOffer()
및 createAnswer()
에 이제 오류 핸들러와 성공 핸들러가 필요합니다. 이전에는 성공 핸들러만 사용하여 이러한 메서드를 호출할 수 있었습니다. 이 사용법은 지원 중단되었습니다.
삭제 의도 | Chromestatus 추적기 | Chromium 버그
Chrome 49에서는 오류 핸들러를 제공하지 않고 setLocalDescription()
또는 setRemoteDescription()
를 호출하는 경우 경고를 추가했습니다. Chrome 50부터 오류 핸들러 인수가 필수입니다.
이는 WebRTC 사양에서 요구하는 대로 이러한 메서드에 약속을 도입하기 위한 준비의 일환입니다.
다음은 WebRTC RTCPeerConnection 데모(main.js, 126번 줄)의 예입니다.
function onCreateOfferSuccess(desc) {
pc1.setLocalDescription(desc, function() {
onSetLocalSuccess(pc1);
}, onSetSessionDescriptionError);
pc2.setRemoteDescription(desc, function() {
onSetRemoteSuccess(pc2);
}, onSetSessionDescriptionError);
pc2.createAnswer(onCreateAnswerSuccess, onCreateSessionDescriptionError);
}
setLocalDescription()
와 setRemoteDescription()
모두 오류 핸들러가 있습니다. 성공 핸들러만 예상되는 이전 브라우저는 오류 핸들러 인수가 있는 경우 이를 무시합니다. 이전 브라우저에서 이 코드를 호출해도 예외가 발생하지 않습니다.
일반적으로 프로덕션 WebRTC 애플리케이션의 경우 WebRTC 프로젝트에서 유지관리하는 shim인 adapter.js
를 사용하여 사양 변경 및 접두사 차이로부터 앱을 격리하는 것이 좋습니다.
XMLHttpRequestProgressEvent가 더 이상 지원되지 않음
요약: XMLHttpRequestProgressEvent
인터페이스가 position
및 totalSize
속성과 함께 삭제됩니다.
삭제 의도 | Chromestatus Tracker | Chromium 버그
이 이벤트는 Gecko 호환성 속성 position
및 totalSize
를 지원하기 위해 존재했습니다. 세 가지 모두에 대한 지원은 Mozilla 22에서 중단되었으며 이 기능은 오래 전에 ProgressEvent
로 대체되었습니다.
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
}
}
접두사가 있는 암호화된 미디어 확장 프로그램 삭제
요약: 접두사가 있는 암호화된 미디어 확장 프로그램이 사양 기반의 접두사가 없는 대체 프로그램으로 대체되어 삭제되었습니다.
삭제 의도 | Chromestatus 추적기 | Chromium 버그
Chrome 42에서는 접두사가 없는 사양 기반 암호화된 미디어 확장 프로그램을 출시했습니다. 이 API는 HTMLMediaElement
에서 사용할 디지털 권한 관리 시스템을 검색, 선택, 상호작용하는 데 사용됩니다.
거의 1년 전입니다. 접두사가 없는 버전에는 접두사가 있는 버전보다 더 많은 기능이 있으므로 API의 접두사가 있는 버전을 삭제할 때입니다.
SVGElement.offset 속성 지원 중단
요약: SVGElement의 오프셋 속성이 HTMLElement
에서 더 광범위하게 지원되는 속성으로 대체되었습니다.
삭제 의도 | Chromestatus Tracker | Chromium 버그
오프셋 속성은 오랫동안 HTMLElement
와 SVGElement
에서 모두 지원되었지만 Gecko와 Edge는 HTMLElement
에서만 지원합니다. 브라우저 간의 일관성을 개선하기 위해 이러한 속성은 Chrome 48에서 지원 중단되었으며 이제 삭제됩니다.
동일한 속성은 HTMLElement
의 일부이지만 대안을 찾는 개발자는 getBoundingClientRect()
도 사용할 수 있습니다.