티스토리 뷰

반응형

Cordova 하이브리드 앱 제작시 발생되는 Content Security Policy(CSP)오류를 해결하는 방법을 알아보겠습니다.

 

글쓴이인 경우 개발 과정에서는 문제가 없었으나, 구글 플레이스토어에 출시를 위해 업로드 후 검토를 진행하는 과정에서 오류가 발생되어 해결했습니다.

 

먼저 오류의 로그를 확인해보겠습니다.

FATAL EXCEPTION: Thread-3
Process: com.itnbasic.allexschool, PID: 24532
java.lang.RuntimeException: java.lang.RuntimeException: Error in evaluationEvaluation: status: 13 value: {message=Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'report-sample' 'nonce-048oYdhFVJiE37vWJzf+6g' 'unsafe-inline'".
} hasMessage: true message: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'report-sample' 'nonce-048oYdhFVJiE37vWJzf+6g' 'unsafe-inline'".
at androidx.test.espresso.web.sugar.Web$WebInteraction$ExceptionPropagator.<init>(Web.java:2)
at androidx.test.espresso.web.sugar.Web$WebInteraction.doEval(Web.java:10)
...

오류가 정확히 일치하지는 않겠지만, 오류의 주 핵심은 'unsafe-eval'이 CSP에 의해 허용되지 않는다는 내용입니다.

 

아마도 사용한 플러그인 중에서 Javascript eval()을 사용해서 발생된 것 같습니다.

 

그 외에도 'unsafe-inline' 등의 CSP 관련으로 발생된 오류를 해결하려면 아래와 같이 간단히 meta tag(메타태그)를 index.html파일의 head tag안에 추가해 주면 됩니다.

<head>
  ...
  <meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline' 'unsafe-eval'; script-src * 'unsafe-inline' 'unsafe-eval'; connect-src * 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; frame-src *; style-src * 'unsafe-inline'; font-src: * 'unsafe-inline';">
  ...
</head>

 

반응형