Browse Source

fix(core): runtime CSP changes on Linux

Lucas Nogueira 3 years ago
parent
commit
f5efc248da
2 changed files with 15 additions and 13 deletions
  1. 5 0
      .changes/fix-csp-linux.md
  2. 10 13
      core/tauri/src/manager.rs

+ 5 - 0
.changes/fix-csp-linux.md

@@ -0,0 +1,5 @@
+---
+"tauri": patch
+---
+
+Fix CSP usage on Linux when changing it via the `on_web_resource_request` handler.

+ 10 - 13
core/tauri/src/manager.rs

@@ -126,13 +126,7 @@ fn set_csp<R: Runtime>(
     default_src.push(format_real_schema(schema));
   }
 
-  #[allow(clippy::let_and_return)]
-  let csp = Csp::DirectiveMap(csp).to_string();
-  #[cfg(target_os = "linux")]
-  {
-    *asset = set_html_csp(asset, &csp);
-  }
-  csp
+  Csp::DirectiveMap(csp).to_string()
 }
 
 #[cfg(target_os = "linux")]
@@ -826,13 +820,16 @@ impl<R: Runtime> WindowManager<R> {
 
         // if it's an HTML file, we need to set the CSP meta tag on Linux
         #[cfg(target_os = "linux")]
-        if let (Some(original_csp), Some(response_csp)) = (
-          asset.csp_header,
-          response.headers().get("Content-Security_Policy"),
-        ) {
+        if let Some(response_csp) = response.headers().get("Content-Security-Policy") {
           let response_csp = String::from_utf8_lossy(response_csp.as_bytes());
-          if response_csp != original_csp {
-            let body = set_html_csp(&String::from_utf8_lossy(response.body()), &response_csp);
+          let body = set_html_csp(&String::from_utf8_lossy(response.body()), &response_csp);
+          *response.body_mut() = body.as_bytes().to_vec();
+        }
+      } else {
+        #[cfg(target_os = "linux")]
+        {
+          if let Some(csp) = &asset.csp_header {
+            let body = set_html_csp(&String::from_utf8_lossy(response.body()), csp);
             *response.body_mut() = body.as_bytes().to_vec();
           }
         }