@@ -387,7 +387,10 @@ pub enum Destination {
387
387
Document ,
388
388
Embed ,
389
389
Font ,
390
+ Frame ,
391
+ IFrame ,
390
392
Image ,
393
+ Json ,
391
394
Manifest ,
392
395
Object ,
393
396
PaintWorklet ,
@@ -398,6 +401,7 @@ pub enum Destination {
398
401
Style ,
399
402
Track ,
400
403
Video ,
404
+ WebIdentity ,
401
405
Worker ,
402
406
Xslt ,
403
407
}
@@ -412,7 +416,7 @@ impl Destination {
412
416
413
417
/**
414
418
response to be validated
415
-
419
+
416
420
https://fetch.spec.whatwg.org/#concept-response
417
421
*/
418
422
#[ derive( Clone , Debug ) ]
@@ -444,7 +448,7 @@ pub enum ViolationResource {
444
448
Inline {
445
449
report_sample : bool ,
446
450
} ,
447
- }
451
+ }
448
452
449
453
/**
450
454
Many algorithms are allowed to return either "Allowed" or "Blocked".
@@ -593,16 +597,6 @@ impl Directive {
593
597
}
594
598
Allowed
595
599
}
596
- "prefetch-src" => {
597
- let name = get_the_effective_directive_for_request ( request) ;
598
- if !should_fetch_directive_execute ( name, "prefetch-src" , policy) {
599
- return Allowed ;
600
- }
601
- if SourceList ( & self . value [ ..] ) . does_request_match_source_list ( request) == DoesNotMatch {
602
- return Blocked ;
603
- }
604
- Allowed
605
- }
606
600
"object-src" => {
607
601
let name = get_the_effective_directive_for_request ( request) ;
608
602
if !should_fetch_directive_execute ( name, "object-src" , policy) {
@@ -666,7 +660,7 @@ impl Directive {
666
660
}
667
661
Allowed
668
662
}
669
- _ => Allowed ,
663
+ _ => Allowed ,
670
664
}
671
665
}
672
666
/// https://www.w3.org/TR/CSP/#directive-post-request-check
@@ -759,17 +753,6 @@ impl Directive {
759
753
}
760
754
Allowed
761
755
}
762
- "prefetch-src" => {
763
- let name = get_the_effective_directive_for_request ( request) ;
764
- if !should_fetch_directive_execute ( name, "prefetch-src" , policy) {
765
- return Allowed ;
766
- }
767
- let source_list = SourceList ( & self . value ) ;
768
- if source_list. does_response_to_request_match_source_list ( request, response) == DoesNotMatch {
769
- return Blocked ;
770
- }
771
- Allowed
772
- }
773
756
"object-src" => {
774
757
let name = get_the_effective_directive_for_request ( request) ;
775
758
if !should_fetch_directive_execute ( name, "object-src" , policy) {
@@ -1065,7 +1048,6 @@ fn get_fetch_directive_fallback_list(directive_name: &str) -> &'static [&'static
1065
1048
"worker-src" => & [ "worker-src" , "child-src" , "script-src" , "default-src" ] ,
1066
1049
"connect-src" => & [ "connect-src" , "default-src" ] ,
1067
1050
"manifest-src" => & [ "manifest-src" , "default-src" ] ,
1068
- "prefetch-src" => & [ "prefetch-src" , "default-src" ] ,
1069
1051
"object-src" => & [ "object-src" , "default-src" ] ,
1070
1052
"frame-src" => & [ "frame-src" , "child-src" , "default-src" ] ,
1071
1053
"media-src" => & [ "media-src" , "default-src" ] ,
@@ -1083,19 +1065,21 @@ fn get_the_effective_directive_for_request(request: &Request) -> &'static str {
1083
1065
return "connect-src" ;
1084
1066
}
1085
1067
if request. initiator == Prefetch || request. initiator == Prerender {
1086
- return "prefetch -src" ;
1068
+ return "default -src" ;
1087
1069
}
1088
1070
match request. destination {
1089
1071
Manifest => "manifest-src" ,
1090
1072
Object | Embed => "object-src" ,
1091
- Document => "frame-src" ,
1073
+ Frame | IFrame => "frame-src" ,
1092
1074
Audio | Track | Video => "media-src" ,
1093
1075
Font => "font-src" ,
1094
1076
Image => "img-src" ,
1095
1077
Style => "style-src-elem" ,
1096
- Script | Xslt => "script-src-elem" ,
1078
+ Script | Xslt | AudioWorklet | PaintWorklet => "script-src-elem" ,
1097
1079
ServiceWorker | SharedWorker | Worker => "worker-src" ,
1098
- _ => "" ,
1080
+ Json | WebIdentity => "connect-src" ,
1081
+ Report => "" ,
1082
+ _ => "connect-src" ,
1099
1083
}
1100
1084
}
1101
1085
0 commit comments