Make Angular working with restrictive Content Security Policy (CSP)

前端 未结 3 725
伪装坚强ぢ
伪装坚强ぢ 2021-02-03 19:05

I cannot make base Angular2 (final) application works with the following restrictive CSP.

default-src \'none\';
script-src \'self\';
style-src \'self\';
font-src          


        
3条回答
  •  悲&欢浪女
    2021-02-03 19:26

    Edited answer for @angular/cli>=8.2

    From this Github thread, one can use the index property in angular.json to control the generation of the application's HTML index:

    build: {
      ...
      "configurations": {
        "production": {
          "index": {
            "input": "src/index.production.html",
             "output": "index.html"
           },
          ...
        }
      }
    }
    

    Original answer

    I've found a way to have restrictive CSP on my production environment while still being able to use the JTI compliler for development.

    • Add a second file: index.production.html to the src folder.
    • Copy the contents of index.html to that file, and add the restrictive CSP header.
    
    
    • Then, add to your angular.json the following:
    build: {
      ...
      "configurations": {
        "production": {
          "fileReplacements": [
            {
              "replace": "src/index.html",
              "with": "src/index.production.html"
            }
          ],
          ...
        }
      }
    }
    

    This makes sure that when you run a production build, it will use the index.production.html with the restrictive CSP, and when you're running it locally, you can use the JTI compiler.

提交回复
热议问题