mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Implement Subresource Integrity
Implemented response validation part of https://w3c.github.io/webappsec-subresource-integrity/. Implemented step eighteen of the main fetch. If a request has integrity metadata, then following steps are performed *Wait for response body *If the response does not have a termination reason and response does not match request’s integrity metadata, set response to a network error.# Please enter the commit message for your changes. Lines starting
This commit is contained in:
parent
496447a363
commit
a3026499f4
19 changed files with 439 additions and 260 deletions
|
@ -243,16 +243,24 @@ impl HTMLLinkElement {
|
|||
Some(ref value) => &***value,
|
||||
None => "",
|
||||
};
|
||||
|
||||
let mut css_parser = CssParser::new(&mq_str);
|
||||
let media = parse_media_query_list(&mut css_parser);
|
||||
|
||||
let im_attribute = element.get_attribute(&ns!(), &local_name!("integrity"));
|
||||
let integrity_val = im_attribute.r().map(|a| a.value());
|
||||
let integrity_metadata = match integrity_val {
|
||||
Some(ref value) => &***value,
|
||||
None => "",
|
||||
};
|
||||
|
||||
// TODO: #8085 - Don't load external stylesheets if the node's mq
|
||||
// doesn't match.
|
||||
let loader = StylesheetLoader::for_element(self.upcast());
|
||||
loader.load(StylesheetContextSource::LinkElement {
|
||||
url: url,
|
||||
media: Some(media),
|
||||
});
|
||||
}, integrity_metadata.to_owned());
|
||||
}
|
||||
|
||||
fn handle_favicon_url(&self, rel: &str, href: &str, sizes: &Option<String>) {
|
||||
|
@ -328,6 +336,12 @@ impl HTMLLinkElementMethods for HTMLLinkElement {
|
|||
// https://html.spec.whatwg.org/multipage/#dom-link-media
|
||||
make_setter!(SetMedia, "media");
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-link-integrity
|
||||
make_getter!(Integrity, "integrity");
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-link-integrity
|
||||
make_setter!(SetIntegrity, "integrity");
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-link-hreflang
|
||||
make_getter!(Hreflang, "hreflang");
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue