file_svg_inline_style_server.sjs (1146B)
1 "use strict"; 2 3 const SVG_IMG = `<svg width="200" height="200" viewBox="0 0 150 150" xmlns="http://www.w3.org/2000/svg"> 4 <style> 5 circle { 6 fill: orange; 7 stroke: black; 8 stroke-width: 10px; 9 } 10 </style> 11 <circle cx="50" cy="50" r="40" /> 12 </svg>`; 13 14 const SVG_IMG_NO_INLINE_STYLE = `<svg width="200" height="200" viewBox="0 0 150 150" xmlns="http://www.w3.org/2000/svg"> 15 <circle cx="50" cy="50" r="40" /> 16 </svg>`; 17 18 function handleRequest(request, response) { 19 const query = request.queryString; 20 21 response.setHeader("Cache-Control", "no-cache", false); 22 response.setHeader("Content-Type", "image/svg+xml", false); 23 24 if (query.includes("svg_inline_style_csp")) { 25 response.setHeader("Content-Security-Policy", "default-src 'none'", false); 26 response.write(SVG_IMG); 27 return; 28 } 29 30 if (query.includes("svg_inline_style_nocsp")) { 31 response.write(SVG_IMG); 32 return; 33 } 34 35 if (query.includes("svg_no_inline_style")) { 36 response.write(SVG_IMG_NO_INLINE_STYLE); 37 return; 38 } 39 40 // we should never get here, but just in case 41 // return something unexpected 42 response.write("do'h"); 43 }