2017-12-13 2 views
0

보고서를 생성하고 CSV로 데이터를 다운로드 할 수있는 링크를 제공하는 VSTS 확장을 작성하려고합니다.VSTS 내선에서 생성 된 CSV 파일을 다운로드하지 못하도록하는 콘텐츠 보안 정책

은 내가 CSV로 저장되는 문자열이 있습니다

크롬에서 예상대로이 작동하지만, 파이어 폭스에서 작업 인해 콘텐츠 보안 정책에 차단
$("#downloadReportButton".click(function() { 
    var csvString = getCSV() 
    var a = window.document.createElement('a') 
    a.href = 'data:attachment/csv,' + encodeURI(csvString) 
    a.download = 'test.csv' 
    document.body.appendChild(a) 
    a.click() 
    document.body.removeChild(a) 
)} 

:

콘텐츠 보안 정책 : 페이지 설정에서 데이터 : attachment/csv, % 22 보관함 % 22, % 22 ... ("frame-src * tfs :")에서 리소스를로드하지 못하도록 차단했습니다.

저는 완전히 CSP에 익숙하지만 실제로 어디에 문제가 있는지 잘 모르겠습니다. 이 차단되는 이유 (VSTS에 iframe 내에 렌더링의 내 콘텐츠에 적용 할 것으로 보인다) 프레임 - SRC 정책에 따라, 나는 확실하지 않다 :

frame-src * tfs:; 

그것은 프레임 - 나에게 보인다 SRC는 콘텐츠를 허용하는 즉, *을 허용하고, 또는 tfs:

나는 script-src 중 하나에 문제가 표시되지 않습니다 : 여기에

script-src 'unsafe-inline' *.visualstudio.com https://cdn.vsassets.io *.ensighten.com *.microsoft.com *.google-analytics.com 'nonce-bbKMGh5rKZ1WElrqfMYBVQ=='; 

내가 헤더에서보고 있어요 전체 CSP의 :

내가 취한 접근 방식보다는이 작업을 올바르게 수행하기 위해 다른 방법을 사용해야하는 것처럼 보입니다. 그러나 여기에서 어디로 가야할지 모르겠습니다. VSTS 태그를 모니터링하고 유용한 정보를 제공하는 데 큰 도움이 된 Microsoft의 사람들에게 선제 적으로 외쳤습니다. 감사합니다. 대신에, 난 그냥 인코딩 된 콘텐츠와 window.open를 호출 되었어야 해키 앵커 솔루션의

답변

0

:

$("#downloadReportButton".click(function() { 
    var csvString = getCSV() 
    var attachment = 'data:attachment/csv,' + encodeURI(csvString) 
    window.open(attachment) 
)} 

이에 대한 주요 단점은 파일 이름이 내 지식으로 설정 될 수 없다는 것입니다.

관련 문제