<div class="composer-human-ai-pair-container" style="display: flex; flex-direction: column; box-sizing: border-box; position: relative;"><div tabindex="0" data-message-index="0" data-message-id="2369d3d6-bf33-498c-a3c1-0ff4d296a0e1" data-message-role="human" data-message-kind="human" class="relative composer-rendered-message hide-if-empty composer-message-blur composer-sticky-human-message composer-sticky-plan-block" id="bubble-0ff4d296a0e1" style="display: block; outline: none; padding: 0px 10px; margin-bottom: 8px; background-color: var(--composer-pane-background); opacity: 1; position: sticky; z-index: 101;"><div class="" style="background-color: transparent;"><div class="human-message-with-todos-wrapper"><div class="composer-human-message-container human-execution-message-top" style="display: flex; align-items: flex-start; gap: 8px; width: 100%; background-color: color-mix(in srgb, var(--vscode-sideBar-background) 60%, transparent); outline: none; border-radius: 6px;"><div style="display: flex; flex-direction: column; align-items: flex-end; width: 100%;"><div class="composer-human-message  " style="cursor: pointer; background-color: color-mix(in srgb, var(--vscode-input-background) 90%, #191c22);"><div class="py-1.5 px-2 box-border w-full flex flex-col gap-1.5"><div class="flex w-full box-border gap-2.5 justify-between items-center"><div class="min-w-0 h-min"><div style="overflow: hidden; max-height: 72px; mask-image: linear-gradient(black 65%, transparent 100%);"><div aria-autocomplete="none" autocapitalize="off" class="aislash-editor-input-readonly" contenteditable="false" spellcheck="false" style="resize: none; grid-area: 1 / 1 / 1 / 1; overflow: hidden; line-height: 1.5; font-family: inherit; font-size: 13px; color: var(--vscode-input-foreground); background-color: transparent; display: block; outline: none; scrollbar-width: none; box-sizing: border-box; border: none; overflow-wrap: break-word; word-break: break-word; padding: 0px; user-select: text; white-space: pre-wrap;" data-lexical-editor="true"><p dir="ltr"><span data-lexical-text="true">index.html?id=c5d8cd…F%2Fvscode-app:1086 Loading the script 'https://type-words-4n6djfw59l.edgeone.cool/vscode/assets/index-C0HjsgId.js' violates the following Content Security Policy directive: "default-src 'none'". Note that 'script-src-elem' was not explicitly set, so 'default-src' is used as a fallback. The action has been blocked.</span></p><p dir="ltr"><span data-lexical-text="true">index.html?id=c5d8cd…F%2Fvscode-app:1086 Loading the script 'https://type-words-4n6djfw59l.edgeone.cool/vscode/assets/icons-DVb7W-0B.js' violates the following Content Security Policy directive: "default-src 'none'". Note that 'script-src-elem' was not explicitly set, so 'default-src' is used as a fallback. The action has been blocked.</span></p><p dir="ltr"><span data-lexical-text="true">index.html?id=c5d8cd…F%2Fvscode-app:1086 Loading the script 'https://type-words-4n6djfw59l.edgeone.cool/vscode/assets/utils-Bkoc15Tl.js' violates the following Content Security Policy directive: "default-src 'none'". Note that 'script-src-elem' was not explicitly set, so 'default-src' is used as a fallback. The action has been blocked.</span></p><p dir="ltr"><span data-lexical-text="true">index.html?id=c5d8cd…F%2Fvscode-app:1086 Loading the stylesheet 'https://type-words-4n6djfw59l.edgeone.cool/vscode/assets/utils-pqXEIRJB.css' violates the following Content Security Policy directive: "default-src 'none'". Note that 'style-src-elem' was not explicitly set, so 'default-src' is used as a fallback. The action has been blocked.</span></p><p dir="ltr"><span data-lexical-text="true">index.html?id=c5d8cd…F%2Fvscode-app:1086 Loading the stylesheet 'https://type-words-4n6djfw59l.edgeone.cool/vscode/assets/index-D4BRJAZe.css' violates the following Content Security Policy directive: "default-src 'none'". Note that 'style-src-elem' was not explicitly set, so 'default-src' is used as a fallback. The action has been blocked.</span></p><p dir="ltr"><span data-lexical-text="true">log.ts:440  INFO [perf] Render performance baseline is 18ms</span></p><p dir="ltr"><span data-lexical-text="true">index.html?id=c5d8cd…45da-888b-63dfdf…:1 Loading the stylesheet 'https://type-words-4n6djfw59l.edgeone.cool/vscode/assets/utils-pqXEIRJB.css' violates the following Content Security Policy directive: "default-src 'none'". Note that 'style-src-elem' was not explicitly set, so 'default-src' is used as a fallback. The action has been blocked.</span></p><p dir="ltr"><span data-lexical-text="true">index.html?id=c5d8cd…45da-888b-63dfdf…:1 Loading the stylesheet 'https://type-words-4n6djfw59l.edgeone.cool/vscode/assets/index-D4BRJAZe.css' violates the following Content Security Policy directive: "default-src 'none'". Note that 'style-src-elem' was not explicitly set, so 'default-src' is used as a fallback. The action has been blocked.</span></p><p dir="ltr"><span data-lexical-text="true">﻿</span></p><p><br></p><p><br></p></div></div></div><div class="flex flex-col justify-end self-end w-5 shrink-0 items-end relative undefined"><div class="anysphere-icon-button bg-[transparent] border-none text-[var(--cursor-text-primary)] flex w-4 items-center justify-center box-border flex-shrink-0 hover:bg-[var(--vscode-toolbar-hoverBackground)] rounded-[5px] !w-[20px] !h-[20px] restore-button " style="width: 20px; height: 20px;"><span class="codicon codicon-restore !text-[16px] undefined "></span></div></div></div></div></div></div></div><div class="human-execution-message-bottom" style="margin-top: -85px;"><div class="todo-summary-sticky-container" style="overflow: hidden; box-sizing: border-box; height: 85px; opacity: 0; max-height: 116.5px; background-color: color-mix(in srgb, var(--vscode-input-background) 60%, #191c22);"><div class="todo-summary-empty-line" style="opacity: 0; height: 85px;"></div></div><div class="composer-fade-overlay" style="opacity: 0;"></div></div></div></div></div><div tabindex="0" data-message-index="1" data-message-id="73c7af55-3edd-49c0-bda5-eb19ac1b99e3" data-message-role="ai" data-message-kind="assistant" class="relative composer-rendered-message hide-if-empty composer-message-blur" id="bubble-eb19ac1b99e3" style="display: block; outline: none; padding: 0px 18px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div style="position: sticky; top: 0px;"><div style="padding: 0px 2px;"><span class="anysphere-markdown-container-root" style="user-select: text; font-size: 1em; line-height: 1.5; min-height: 22.2px;"><section id="markdown-section-73c7af55-3edd-49c0-bda5-eb19ac1b99e3-0" class="markdown-section" data-markdown-raw="检查项目结构和相关配置，定位 CSP 设置位置。" data-section-index="0"><span>检查项目结构和相关配置，定位 CSP 设置位置。</span></section></span></div></div></div></div><div class="composer-message-group"><div style="padding: 0px 18px; opacity: 1;"><div class="composer-message-group composer-new-convo-summary" style="padding: 0px 2px; cursor: default;"><div class="collapsible-clean composer-summary-title-container" style="display: flex; flex-direction: column; gap: 0px; overflow-anchor: none;"><div style="display: flex; flex-direction: row; align-items: center; gap: 4px; cursor: pointer; width: 100%; max-width: 100%; box-sizing: border-box; overflow: hidden;"><div style="display: flex; gap: 4px; overflow: hidden;"><div class="collapsible-header-text" style="flex: 0 1 auto; min-width: 0px; display: flex; align-items: center; overflow: hidden; gap: 2px; color: var(--cursor-text-secondary); transition: opacity 0.1s ease-in; font-size: 12px;"><span class="" style="flex: 0 1 auto; min-width: 0px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;"><span class="composer-summary-title truncate-one-line"><span style="color: var(--cursor-text-secondary); white-space: nowrap; flex-shrink: 0; margin-right: 4px;">Explored</span><span class="tool-summary-hover-target "><span class="truncate-one-line composer-run-title-rest">1</span><span class="truncate-one-line composer-run-title-object"> file</span><span class="composer-summary-comma"> </span></span><span class="tool-summary-hover-target "><span class="truncate-one-line composer-run-title-rest">6</span><span class="truncate-one-line composer-run-title-object"> searches</span></span></span></span><div class="codicon codicon-chevron-right !text-[18px] chevron-right" style="color: var(--vscode-foreground); line-height: 14px; width: 21px; height: auto; display: flex; justify-content: flex-start; align-items: center; transform-origin: 45% 55%; transition: transform 0.15s ease-in-out, opacity 0.2s ease-in-out, color 0.1s ease-in; flex-shrink: 0; cursor: pointer; --chevron-opacity: 0.6; transform: rotate(90deg); animation: 0.1s ease-in 0s 1 normal forwards running chevronFadeIn;"></div></div></div></div><div class="collapsible-clean-children composer-summary-title-container-children" style="padding-left: 0px; overflow-anchor: none;"><div tabindex="0" data-tool-call-id="tool_a384a716-205e-47e0-a9c9-349c9e9469d" data-tool-status="completed" data-message-index="2" data-message-id="355e2d8d-b4bc-4147-97dc-c806f06be672" data-message-role="ai" data-message-kind="tool" class="relative composer-rendered-message hide-if-empty composer-message-blur composer-grouped-toolformer-message" id="bubble-c806f06be672" style="display: block; outline: none; padding: 0px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div class="composer-tool-former-message" style="padding: 0px;"><div class="collapsible-clean undefined" style="display: flex; flex-direction: column; gap: 2px; overflow-anchor: none;"><div style="display: flex; flex-direction: row; align-items: center; gap: 4px; cursor: pointer; width: 100%; max-width: 100%; box-sizing: border-box; overflow: hidden;"><div style="display: flex; gap: 4px; overflow: hidden;"><div class="collapsible-header-text" style="flex: 0 1 auto; min-width: 0px; display: flex; align-items: center; overflow: hidden; gap: 4px; color: var(--vscode-foreground); transition: opacity 0.1s ease-in; font-size: 12px;"><span class="" style="flex: 0 1 auto; min-width: 0px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;"><div style="display: flex; align-items: center; overflow: hidden;"><span style="color: var(--cursor-text-secondary); white-space: nowrap; flex-shrink: 0;">Read</span><span class="edit-header-filename" style="margin-left: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0px;">extension.ts</span></div></span></div></div></div></div></div></div></div><div tabindex="0" data-tool-call-id="tool_5671b97d-323b-45de-b3e6-97fa98bf5b7" data-tool-status="cancelled" data-message-index="3" data-message-id="0adf174a-41d2-487a-a617-acb10b850e0f" data-message-role="ai" data-message-kind="tool" class="relative composer-rendered-message hide-if-empty composer-message-blur composer-grouped-toolformer-message" id="bubble-acb10b850e0f" style="display: block; outline: none; padding: 0px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div class="composer-tool-former-message" style="padding: 0px;"><div><div class="collapsible-clean undefined" style="display: flex; flex-direction: column; gap: 2px; overflow-anchor: none;"><div style="display: flex; flex-direction: row; align-items: center; gap: 4px; cursor: pointer; width: 100%; max-width: 100%; box-sizing: border-box; overflow: hidden;"><div style="display: flex; gap: 4px; overflow: hidden;"><div class="collapsible-header-text" style="flex: 0 1 auto; min-width: 0px; display: flex; align-items: center; overflow: hidden; gap: 4px; color: var(--cursor-text-tertiary); transition: opacity 0.1s ease-in; font-size: 12px;"><span class="" style="flex: 0 1 auto; min-width: 0px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;"><div style="display: flex; align-items: center; overflow: hidden;"><span style="color: var(--cursor-text-secondary); white-space: nowrap; flex-shrink: 0;">Searched</span><span style="color: var(--cursor-text-tertiary); margin-left: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0px;">Content Security Policy CSP configuration</span></div></span></div></div></div></div></div></div></div></div><div tabindex="0" data-tool-call-id="tool_8fa526f6-5d1b-45ac-ba15-5a72cfe8657" data-tool-status="completed" data-message-index="4" data-message-id="bc097334-9349-4d4e-af7c-2ceed23801a4" data-message-role="ai" data-message-kind="tool" class="relative composer-rendered-message hide-if-empty composer-message-blur composer-grouped-toolformer-message" id="bubble-2ceed23801a4" style="display: block; outline: none; padding: 0px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div class="composer-tool-former-message" style="padding: 0px;"><div><div class="collapsible-clean undefined" style="display: flex; flex-direction: column; gap: 2px; overflow-anchor: none;"><div style="display: flex; flex-direction: row; align-items: center; gap: 4px; cursor: pointer; width: 100%; max-width: 100%; box-sizing: border-box; overflow: hidden;"><div style="display: flex; gap: 4px; overflow: hidden;"><div class="collapsible-header-text" style="flex: 0 1 auto; min-width: 0px; display: flex; align-items: center; overflow: hidden; gap: 4px; color: var(--cursor-text-tertiary); transition: opacity 0.1s ease-in; font-size: 12px;"><span class="" style="flex: 0 1 auto; min-width: 0px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;"><div style="display: flex; align-items: center; overflow: hidden;"><span style="color: var(--cursor-text-secondary); white-space: nowrap; flex-shrink: 0;">Searched files</span><span style="color: var(--cursor-text-tertiary); margin-left: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0px;">**/index.html in .</span></div></span></div></div></div></div></div></div></div></div><div tabindex="0" data-tool-call-id="tool_adfdc37f-6840-43d3-860e-4429c51dc1d" data-tool-status="cancelled" data-message-index="5" data-message-id="43996b75-2ee6-483c-9b08-838625b6cdc6" data-message-role="ai" data-message-kind="tool" class="relative composer-rendered-message hide-if-empty composer-message-blur composer-grouped-toolformer-message" id="bubble-838625b6cdc6" style="display: block; outline: none; padding: 0px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div class="composer-tool-former-message" style="padding: 0px;"><div><div class="collapsible-clean undefined" style="display: flex; flex-direction: column; gap: 2px; overflow-anchor: none;"><div style="display: flex; flex-direction: row; align-items: center; gap: 4px; cursor: pointer; width: 100%; max-width: 100%; box-sizing: border-box; overflow: hidden;"><div style="display: flex; gap: 4px; overflow: hidden;"><div class="collapsible-header-text" style="flex: 0 1 auto; min-width: 0px; display: flex; align-items: center; overflow: hidden; gap: 4px; color: var(--cursor-text-tertiary); transition: opacity 0.1s ease-in; font-size: 12px;"><span class="" style="flex: 0 1 auto; min-width: 0px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;"><div style="display: flex; align-items: center; overflow: hidden;"><span style="color: var(--cursor-text-secondary); white-space: nowrap; flex-shrink: 0;">Searched files</span><span style="color: var(--cursor-text-tertiary); margin-left: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0px;">**/package.json in .</span></div></span></div></div></div></div></div></div></div></div><div tabindex="0" data-message-index="6" data-message-id="89375cc2-3877-4197-a72a-a6187f4ef8dc" data-message-role="ai" data-message-kind="assistant" class="relative composer-rendered-message hide-if-empty composer-message-blur composer-grouped-toolformer-message" id="bubble-a6187f4ef8dc" style="display: block; outline: none; padding: 0px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div style="position: sticky; top: 0px;"><div style="padding: 0px 2px;"><span class="anysphere-markdown-container-root" style="user-select: text; font-size: 1em; line-height: 1.5; min-height: 22.2px;"><section id="markdown-section-89375cc2-3877-4197-a72a-a6187f4ef8dc-0" class="markdown-section" data-markdown-raw="检查相关文件，定位 CSP 配置问题。" data-section-index="0"><span>检查相关文件，定位 CSP 配置问题。</span></section></span></div></div></div></div><div tabindex="0" data-tool-call-id="tool_17af33b9-62f5-4bb1-b721-6ba621ccc03" data-tool-status="completed" data-message-index="7" data-message-id="6a013fb0-dc01-4f17-8119-fa8e2de64430" data-message-role="ai" data-message-kind="tool" class="relative composer-rendered-message hide-if-empty composer-message-blur composer-grouped-toolformer-message" id="bubble-fa8e2de64430" style="display: block; outline: none; padding: 0px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div class="composer-tool-former-message" style="padding: 0px;"><div class="collapsible-clean undefined" style="display: flex; flex-direction: column; gap: 2px; overflow-anchor: none;"><div style="display: flex; flex-direction: row; align-items: center; gap: 4px; cursor: pointer; width: 100%; max-width: 100%; box-sizing: border-box; overflow: hidden;"><div style="display: flex; gap: 4px; overflow: hidden;"><div class="collapsible-header-text" style="flex: 0 1 auto; min-width: 0px; display: flex; align-items: center; overflow: hidden; gap: 4px; color: var(--vscode-foreground); transition: opacity 0.1s ease-in; font-size: 12px;"><span class="" style="flex: 0 1 auto; min-width: 0px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;"><div style="display: flex; align-items: center; overflow: hidden;"><span style="color: var(--cursor-text-secondary); white-space: nowrap; flex-shrink: 0;">Read</span><span class="edit-header-filename" style="margin-left: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0px;">extension.ts</span></div></span></div></div></div></div></div></div></div><div tabindex="0" data-tool-call-id="tool_c39489bd-494e-4796-a895-5393ef29c7b" data-tool-status="completed" data-message-index="8" data-message-id="9e047bf9-fe59-47ff-a6c0-b53717903035" data-message-role="ai" data-message-kind="tool" class="relative composer-rendered-message hide-if-empty composer-message-blur composer-grouped-toolformer-message" id="bubble-b53717903035" style="display: block; outline: none; padding: 0px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div class="composer-tool-former-message" style="padding: 0px;"><div><div class="collapsible-clean undefined" style="display: flex; flex-direction: column; gap: 2px; overflow-anchor: none;"><div style="display: flex; flex-direction: row; align-items: center; gap: 4px; cursor: pointer; width: 100%; max-width: 100%; box-sizing: border-box; overflow: hidden;"><div style="display: flex; gap: 4px; overflow: hidden;"><div class="collapsible-header-text" style="flex: 0 1 auto; min-width: 0px; display: flex; align-items: center; overflow: hidden; gap: 4px; color: var(--cursor-text-tertiary); transition: opacity 0.1s ease-in; font-size: 12px;"><span class="" style="flex: 0 1 auto; min-width: 0px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;"><div style="display: flex; align-items: center; overflow: hidden;"><span style="color: var(--cursor-text-secondary); white-space: nowrap; flex-shrink: 0;">Searched</span><span style="color: var(--cursor-text-tertiary); margin-left: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0px;">Content Security Policy CSP configuration index.html</span></div></span></div></div></div></div></div></div></div></div><div tabindex="0" data-tool-call-id="tool_3dfd3599-2321-4d6e-99d1-ab615a4cc72" data-tool-status="completed" data-message-index="9" data-message-id="c6173619-3c9f-455b-ab22-f8d6b353fe0d" data-message-role="ai" data-message-kind="tool" class="relative composer-rendered-message hide-if-empty composer-message-blur composer-grouped-toolformer-message" id="bubble-f8d6b353fe0d" style="display: block; outline: none; padding: 0px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div class="composer-tool-former-message" style="padding: 0px;"><div><div class="collapsible-clean undefined" style="display: flex; flex-direction: column; gap: 2px; overflow-anchor: none;"><div style="display: flex; flex-direction: row; align-items: center; gap: 4px; cursor: pointer; width: 100%; max-width: 100%; box-sizing: border-box; overflow: hidden;"><div style="display: flex; gap: 4px; overflow: hidden;"><div class="collapsible-header-text" style="flex: 0 1 auto; min-width: 0px; display: flex; align-items: center; overflow: hidden; gap: 4px; color: var(--cursor-text-tertiary); transition: opacity 0.1s ease-in; font-size: 12px;"><span class="" style="flex: 0 1 auto; min-width: 0px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;"><div style="display: flex; align-items: center; overflow: hidden;"><span style="color: var(--cursor-text-secondary); white-space: nowrap; flex-shrink: 0;">Searched files</span><span style="color: var(--cursor-text-tertiary); margin-left: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0px;">**/index.html in .</span></div></span></div></div></div></div></div></div></div></div><div tabindex="0" data-tool-call-id="tool_29ca73f3-0f68-4296-920a-91c4e295e51" data-tool-status="completed" data-message-index="10" data-message-id="52d978a7-8ca4-4bce-87ab-08ef36e8cb14" data-message-role="ai" data-message-kind="tool" class="relative composer-rendered-message hide-if-empty composer-message-blur composer-grouped-toolformer-message" id="bubble-08ef36e8cb14" style="display: block; outline: none; padding: 0px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div class="composer-tool-former-message" style="padding: 0px;"><div><div class="collapsible-clean undefined" style="display: flex; flex-direction: column; gap: 2px; overflow-anchor: none;"><div style="display: flex; flex-direction: row; align-items: center; gap: 4px; cursor: pointer; width: 100%; max-width: 100%; box-sizing: border-box; overflow: hidden;"><div style="display: flex; gap: 4px; overflow: hidden;"><div class="collapsible-header-text" style="flex: 0 1 auto; min-width: 0px; display: flex; align-items: center; overflow: hidden; gap: 4px; color: var(--cursor-text-tertiary); transition: opacity 0.1s ease-in; font-size: 12px;"><span class="" style="flex: 0 1 auto; min-width: 0px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;"><div style="display: flex; align-items: center; overflow: hidden;"><span style="color: var(--cursor-text-secondary); white-space: nowrap; flex-shrink: 0;">Searched</span><span style="color: var(--cursor-text-tertiary); margin-left: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0px;">vscode web extension webview HTML content security policy</span></div></span></div></div></div></div></div></div></div></div><div tabindex="0" data-message-index="11" data-message-id="500361ad-ee36-4183-9911-0376c4cc6f06" data-message-role="ai" data-message-kind="assistant" class="relative composer-rendered-message hide-if-empty composer-message-blur composer-grouped-toolformer-message" id="bubble-0376c4cc6f06" style="display: block; outline: none; padding: 0px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div style="position: sticky; top: 0px;"><div style="padding: 0px 2px;"><span class="anysphere-markdown-container-root" style="user-select: text; font-size: 1em; line-height: 1.5; min-height: 22.2px;"><section id="markdown-section-500361ad-ee36-4183-9911-0376c4cc6f06-0" class="markdown-section" data-markdown-raw="问题在 `extension.ts` 的 CSP：`default-src 'none'` 阻止了所有资源，但需要从 CDN 加载脚本和样式。更新 CSP，添加 `script-src` 和 `style-src` 以允许从 CDN 加载。" data-section-index="0"><span>问题在 </span><span class="markdown-inline-code leading-[1.4]" style="word-break: break-all; font-family: Consolas, &quot;Courier New&quot;, monospace, Menlo, Monaco, &quot;Courier New&quot;, monospace; cursor: default; color: inherit;"><span>extension.ts</span></span><span> 的 CSP：</span><span class="markdown-inline-code leading-[1.4]" style="word-break: break-all; font-family: Consolas, &quot;Courier New&quot;, monospace, Menlo, Monaco, &quot;Courier New&quot;, monospace; cursor: default; color: inherit;"><span>default-src 'none'</span></span><span> 阻止了所有资源，但需要从 CDN 加载脚本和样式。更新 CSP，添加 </span><span class="markdown-inline-code leading-[1.4]" style="word-break: break-all; font-family: Consolas, &quot;Courier New&quot;, monospace, Menlo, Monaco, &quot;Courier New&quot;, monospace; cursor: default; color: inherit;"><span>script-src</span></span><span> 和 </span><span class="markdown-inline-code leading-[1.4]" style="word-break: break-all; font-family: Consolas, &quot;Courier New&quot;, monospace, Menlo, Monaco, &quot;Courier New&quot;, monospace; cursor: default; color: inherit;"><span>style-src</span></span><span> 以允许从 CDN 加载。</span></section></span></div></div></div></div><div tabindex="0" data-tool-call-id="tool_3382b6ac-f1e7-49c6-ab3a-195a5003671" data-tool-status="completed" data-message-index="12" data-message-id="c548ee7c-59ee-447f-9c69-3f25c05e7347" data-message-role="ai" data-message-kind="tool" class="relative composer-rendered-message hide-if-empty composer-message-blur composer-grouped-toolformer-message" id="bubble-3f25c05e7347" style="display: block; outline: none; padding: 0px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div class="composer-tool-former-message" style="padding: 0px;"><div class="collapsible-clean undefined" style="display: flex; flex-direction: column; gap: 2px; overflow-anchor: none;"><div style="display: flex; flex-direction: row; align-items: center; gap: 4px; cursor: pointer; width: 100%; max-width: 100%; box-sizing: border-box; overflow: hidden;"><div style="display: flex; gap: 4px; overflow: hidden;"><div class="collapsible-header-text" style="flex: 0 1 auto; min-width: 0px; display: flex; align-items: center; overflow: hidden; gap: 4px; color: var(--vscode-foreground); transition: opacity 0.1s ease-in; font-size: 12px;"><span class="" style="flex: 0 1 auto; min-width: 0px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;"><div style="display: flex; align-items: center; overflow: hidden;"><span style="color: var(--cursor-text-secondary); white-space: nowrap; flex-shrink: 0;">Read</span><span class="edit-header-filename" style="margin-left: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0px;">extension.ts</span></div></span></div></div></div></div></div></div></div><div tabindex="0" data-message-index="13" data-message-id="f6db7905-c1db-46a1-8d12-ea783dbfcbf7" data-message-role="ai" data-message-kind="assistant" class="relative composer-rendered-message hide-if-empty composer-message-blur composer-grouped-toolformer-message" id="bubble-ea783dbfcbf7" style="display: block; outline: none; padding: 0px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div style="position: sticky; top: 0px;"><div style="padding: 0px 2px;"><span class="anysphere-markdown-container-root" style="user-select: text; font-size: 1em; line-height: 1.5; min-height: 22.2px;"><section id="markdown-section-f6db7905-c1db-46a1-8d12-ea783dbfcbf7-0" class="markdown-section" data-markdown-raw="更新 CSP 配置，允许从 CDN 加载脚本和样式。" data-section-index="0"><span>更新 CSP 配置，允许从 CDN 加载脚本和样式。</span></section></span></div></div></div></div></div></div></div></div></div><div tabindex="0" data-tool-call-id="tool_423c6765-4020-4601-99ec-510cea901ff" data-tool-status="completed" data-message-index="15" data-message-id="d1eaebb2-d20f-4853-8bdc-8940bafdd919" data-message-role="ai" data-message-kind="tool" class="relative composer-rendered-message hide-if-empty composer-message-blur" id="bubble-8940bafdd919" style="display: block; outline: none; padding: 0px 18px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div class="composer-tool-former-message" style="padding: 0px;"><div><div class="composer-code-block-container composer-message-codeblock" style="transition: border-color 0.1s ease-in-out;"><div class="composer-code-block-header" aria-id="chat-code-block-header" style="cursor: pointer; border-bottom: 1px solid var(--cursor-stroke-secondary); background: var(--vscode-editor-background);"><div class="composer-code-block-file-info" aria-id="chat-code-block-header" style="overflow: auto hidden; flex-shrink: 1; min-width: 0px;"><span class="composer-primary-toolcall-icon"><div class="show-file-icons" style="height: 18px;"><div style="position: relative; height: 100%; width: 100%; display: flex; align-items: center; justify-content: center;"><div class="monaco-icon-label file-icon typing-word-name-dir-icon extension.ts-name-file-icon name-file-icon ts-ext-file-icon ext-file-icon typescript-lang-file-icon height-override-important file-icon-override" style="height: 100%;"></div></div></div></span><span class="composer-code-block-filename" style="white-space: nowrap;"><span aria-id="chat-code-block-header" style="direction: ltr; unicode-bidi: embed;">extension.ts<span style="margin-left: 6px; color: var(--vscode-gitDecoration-addedResourceForeground); font-size: 12px;">(new)</span></span></span><span class="composer-code-block-status"><span style="color: var(--vscode-descriptionForeground); line-height: 120%; font-size: 12px; font-variant-numeric: tabular-nums; display: flex; align-items: center; gap: 4px;"><div style="display: flex; align-items: center; gap: 3px;"><span aria-id="chat-code-block-header" style="color: var(--vscode-gitDecoration-addedResourceForeground, var(--cursor-text-green-primary));">+2</span><span aria-id="chat-code-block-header" style="color: var(--vscode-gitDecoration-deletedResourceForeground, var(--cursor-text-red-primary));">-1</span></div></span></span><span class="composer-code-block-status"></span></div><div><div style="overflow: hidden; display: flex; justify-content: flex-end; align-items: center; position: relative;"><div style="display: flex; justify-content: flex-end; justify-self: flex-end; flex-shrink: 0; position: relative; align-items: center;"><div style="flex-shrink: 0; height: 100%; transition: opacity 0.1s ease-in-out; opacity: 0; pointer-events: none;"></div><div style="flex-shrink: 0; height: 100%; transition: opacity 0.1s ease-in-out; opacity: 0; pointer-events: none;"></div><div style="flex-shrink: 0; height: 100%; transition: opacity 0.1s ease-in-out; opacity: 0; pointer-events: none;"></div><div style="flex-shrink: 0; height: 100%; transition: opacity 0.1s ease-in-out; opacity: 0; pointer-events: none;"></div><div style="flex-shrink: 0; height: 100%; transition: opacity 0.1s ease-in-out; opacity: 0; pointer-events: none;"></div><div style="flex-shrink: 0; height: 100%; transition: opacity 0.1s ease-in-out; opacity: 0; pointer-events: none;"></div></div></div></div></div><div style="position: relative;"><div class="composer-code-block-content" style="display: none; padding-bottom: 16px;"><div class="scrollable-div-container show-only-on-hover" data-keybinding-context="87" data-mode-id="worktree-typescript" style="height: 90px;"><div class="monaco-editor no-user-select  showUnused showDeprecated vs-dark" role="code" data-uri="composer-code-block-anysphere://ctoouzjppa" style="width: 5px; height: 5px;"><div data-mprt="3" class="overflow-guard" style="width: 5px; height: 5px;"><textarea data-mprt="7" class="inputarea monaco-mouse-cursor-text" wrap="off" autocorrect="off" autocapitalize="off" autocomplete="off" spellcheck="false" aria-label="The editor is not accessible at this time. To enable screen reader optimized mode, use Shift+Alt+F1" aria-required="false" tabindex="0" role="textbox" aria-roledescription="editor" aria-multiline="true" aria-autocomplete="none" style="tab-size: 26.3906px; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; top: 0px; left: 0px; width: 1px; height: 1px;"></textarea><div class="monaco-editor-background textAreaCover" style="position: absolute; top: 0px; left: 0px; width: 1px; height: 1px;"></div><div class="margin" role="presentation" aria-hidden="true" style="position: absolute; transform: translate3d(0px, 0px, 0px); contain: strict; top: -199px; height: 204px; width: 0px;"><div class="glyph-margin" style="left: 0px; width: 0px; height: 204px;"></div><div class="margin-view-zones" role="presentation" aria-hidden="true" style="position: absolute;"></div><div class="margin-view-overlays" role="presentation" aria-hidden="true" style="position: absolute; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; width: 0px; height: 204px;"><div style="top:182px;height:16px;"></div></div><div class="glyph-margin-widgets" style="position: absolute; top: 0px;"></div></div><div class="monaco-scrollable-element editor-scrollable vs-dark" role="presentation" data-mprt="6" style="position: absolute; overflow: hidden; left: 0px; width: 5px; height: 5px;"><div class="lines-content monaco-editor-background" style="position: absolute; overflow: hidden; width: 1.67772e+07px; height: 1.67772e+07px; transform: translate3d(0px, 0px, 0px); contain: strict; top: -199px; left: 0px;"><div class="view-overlays" role="presentation" aria-hidden="true" style="position: absolute; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; height: 0px; width: 402px;"><div style="top:182px;height:16px;"></div></div><div role="presentation" aria-hidden="true" class="view-rulers"></div><div class="view-zones" role="presentation" aria-hidden="true" style="position: absolute;"></div><div class="view-lines monaco-mouse-cursor-text" role="presentation" aria-hidden="true" data-mprt="8" style="position: absolute; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; width: 402px; height: 204px;"><div style="top:182px;height:16px;" class="view-line"><span><span class="mtk11">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/head&gt;</span></span></div></div><div data-mprt="1" class="contentWidgets" style="position: absolute; top: 0px;"></div><div role="presentation" aria-hidden="true" class="cursors-layer cursor-line-thin-style cursor-solid"><div class="cursor  monaco-mouse-cursor-text " style="height: 16px; top: 6px; left: 0px; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; display: none; visibility: hidden; padding-left: 0px; width: 0.555556px;"></div></div></div><div role="presentation" aria-hidden="true" class="invisible scrollbar horizontal fade" style="position: absolute; width: 5px; height: 6px; left: 0px; bottom: 0px;"><div class="slider" style="position: absolute; top: 0px; left: 0px; height: 6px; transform: translate3d(0px, 0px, 0px); contain: strict; width: 20px;"></div></div><canvas class="decorationsOverviewRuler" aria-hidden="true" width="0" height="0" style="position: absolute; transform: translate3d(0px, 0px, 0px); contain: strict; top: 0px; right: 0px; width: 0px; height: 5px; display: none;"></canvas><div role="presentation" aria-hidden="true" class="invisible scrollbar vertical" style="position: absolute; width: 0px; height: 5px; right: 0px; top: 0px;"><div class="slider" style="position: absolute; top: -15px; left: 0px; width: 0px; transform: translate3d(0px, 0px, 0px); contain: strict; height: 20px;"></div></div></div><div role="presentation" aria-hidden="true" style="width: 5px;"></div><div data-mprt="4" class="overlayWidgets" style="width: 5px;"></div><div data-mprt="9" class="minimap slider-mouseover" role="presentation" aria-hidden="true" style="position: absolute; left: 0px; width: 0px; height: 5px;"><div class="minimap-shadow-hidden" style="height: 5px;"></div><canvas width="0" height="9" style="position: absolute; left: 0px; width: 0px; height: 5px;"></canvas><canvas class="minimap-decorations-layer" width="0" height="9" style="position: absolute; left: 0px; width: 0px; height: 5px;"></canvas><div class="minimap-slider" style="position: absolute; transform: translate3d(0px, 0px, 0px); contain: strict; width: 0px;"><div class="minimap-slider-horizontal" style="position: absolute; width: 0px; height: 0px;"></div></div></div><div role="presentation" aria-hidden="true" class="blockDecorations-container"></div></div><div data-mprt="2" class="overflowingContentWidgets"></div><div data-mprt="5" class="overflowingOverlayWidgets"></div></div></div></div><div class="composer-diff-block" style="box-sizing: border-box; position: relative; background: var(--vscode-editor-background); overflow: auto hidden; display: block; height: 140px; margin-bottom: 16px;"><div style="transition: opacity 0.15s ease-in-out; height: 140px; opacity: 1;" data-keybinding-context="91"><div class="monaco-diff-editor" style="position: relative; height: 100%;"><div class="editor original" style="position: absolute; height: 100%; visibility: visible; left: 0px; width: 0px;" data-keybinding-context="92" data-mode-id="worktree-typescript"><div class="monaco-editor original-in-monaco-diff-editor no-user-select  showUnused showDeprecated vs-dark" role="code" data-uri="composer-code-block-anysphere://sfwulnilmc" style="width: 5px; height: 140px;"><div data-mprt="3" class="overflow-guard" style="width: 5px; height: 140px;"><textarea data-mprt="7" class="inputarea monaco-mouse-cursor-text" wrap="off" autocorrect="off" autocapitalize="off" autocomplete="off" spellcheck="false" aria-label="The editor is not accessible at this time. To enable screen reader optimized mode, use Shift+Alt+F1" aria-required="false" tabindex="0" role="textbox" aria-roledescription="editor" aria-multiline="true" aria-autocomplete="none" style="tab-size: 26.3906px; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; top: 0px; left: 0px; width: 1px; height: 1px;"></textarea><div style="position: absolute; top: 0px; left: 0px; width: 1px; height: 1px;" class="monaco-editor-background textAreaCover"></div><div class="margin" role="presentation" aria-hidden="true" style="position: absolute; contain: strict; top: 0px; height: 140px; width: 10px;"><div class="glyph-margin" style="left: 0px; width: 0px; height: 140px;"></div><div class="margin-view-zones" role="presentation" aria-hidden="true" style="position: absolute; width: 10px;"><div class="gutter-delete" monaco-view-zone="h1" style="position: absolute; width: 100%; display: block; top: 22px; height: 16px;"></div><div class="gutter-delete" monaco-view-zone="h2" style="position: absolute; width: 100%; display: block; top: 98px; height: 16px;"></div></div><div class="margin-view-overlays" role="presentation" aria-hidden="true" style="position: absolute; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; width: 10px; height: 140px;"><div style="top:6px;height:16px;"><div class="current-line" style="width:10px"></div></div><div style="top:38px;height:16px;"></div><div style="top:66px;height:16px;"></div><div style="top:82px;height:16px;"><div class="cmdr gutter-delete" style=""></div></div><div style="top:114px;height:16px;"></div></div><div class="glyph-margin-widgets" style="position: absolute; top: 0px;"></div></div><div class="monaco-scrollable-element editor-scrollable vs-dark" role="presentation" data-mprt="6" style="position: absolute; overflow: hidden; left: 10px; height: 140px;"><div class="lines-content monaco-editor-background" style="position: absolute; overflow: hidden; width: 1.67772e+07px; height: 1.67772e+07px; contain: strict; top: 0px; left: 0px;"><div class="view-overlays" role="presentation" aria-hidden="true" style="position: absolute; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; height: 0px; width: 778px;"><div style="top:6px;height:16px;"></div><div style="top:38px;height:16px;"></div><div style="top:66px;height:16px;"></div><div style="top:82px;height:16px;"><div class="cdr line-delete" style="left:0;width:100%;"></div><div class="cdr char-delete diff-range-empty" style="left:739px;width:0px;"></div></div><div style="top:114px;height:16px;"></div></div><div role="presentation" aria-hidden="true" class="view-rulers"></div><div class="view-zones" role="presentation" aria-hidden="true" style="position: absolute; width: 778px;"><div class="diagonal-fill" monaco-view-zone="h1" style="position: absolute; width: 100%; display: block; top: 22px; height: 16px;" monaco-visible-view-zone="true"></div><div class="diagonal-fill" monaco-view-zone="h2" style="position: absolute; width: 100%; display: block; top: 98px; height: 16px;" monaco-visible-view-zone="true"></div><div monaco-view-zone="h3" style="position: absolute; width: 100%; display: block; top: 54px; height: 12px;" monaco-visible-view-zone="true"></div></div><div class="view-lines monaco-mouse-cursor-text" role="presentation" aria-hidden="true" data-mprt="8" style="position: absolute; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; width: 778px; height: 140px;"><div style="top:6px;height:16px;" class="view-line"><span><span class="mtk1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="mtk5">const</span><span class="mtk1">&nbsp;</span><span class="mtk15">websiteUrl</span><span class="mtk1">&nbsp;</span><span class="mtk5">=</span><span class="mtk1">&nbsp;</span><span class="mtk13">'</span><span class="mtk11">https://typewords.cc</span><span class="mtk13">'</span><span class="mtk5">;</span></span></div><div style="top:38px;height:16px;" class="view-line"><span><span></span></span></div><div style="top:66px;height:16px;" class="view-line"><span><span class="mtk11">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;charset="UTF-8"&gt;</span></span></div><div style="top:82px;height:16px;" class="view-line"><span><span class="mtk11">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;http-equiv="Content-Security-Policy"&nbsp;con</span><span class="mtk11">tent="default-src&nbsp;'none';&nbsp;frame-src&nbsp;</span><span class="mtk13">${</span><span class="mtk15">websiteUrl</span><span class="mtk13">}</span><span class="mtk11">;"&gt;</span></span></div><div style="top:114px;height:16px;" class="view-line"><span><span class="mtk11">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;name="viewport"&nbsp;content="width=device-wi</span><span class="mtk11">dth,&nbsp;initial-scale=1.0"&gt;</span></span></div></div><div data-mprt="1" class="contentWidgets" style="position: absolute; top: 0px;"></div><div role="presentation" aria-hidden="true" class="cursors-layer cursor-line-thin-style cursor-solid"><div class="cursor  monaco-mouse-cursor-text " style="height: 16px; top: 6px; left: 0px; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; display: block; visibility: hidden; padding-left: 0px; width: 0.555556px;"></div></div></div><div role="presentation" aria-hidden="true" class="invisible scrollbar horizontal fade" style="position: absolute; width: 0px; height: 6px; left: 0px; bottom: 0px;"><div class="slider" style="position: absolute; top: 0px; left: 0px; height: 6px; transform: translate3d(0px, 0px, 0px); contain: strict; width: 20px;"></div></div><canvas class="decorationsOverviewRuler" aria-hidden="true" width="0" height="252" style="position: absolute; transform: translate3d(0px, 0px, 0px); contain: strict; top: 0px; right: 0px; width: 0px; height: 140px; display: block;"></canvas><div role="presentation" aria-hidden="true" class="invisible scrollbar vertical" style="position: absolute; width: 0px; height: 140px; right: 0px; top: 0px;"><div class="slider" style="position: absolute; top: 0px; left: 0px; width: 0px; transform: translate3d(0px, 0px, 0px); contain: strict; height: 140px;"></div></div></div><div role="presentation" aria-hidden="true" style="width: 5px;"></div><div data-mprt="4" class="overlayWidgets" style="width: 5px;"><div class="diff-hidden-lines-widget" widgetid="managedOverlayWidget-24" style="position: absolute; height: 12px; top: 54px;"><div class="diff-hidden-lines-compact"></div></div></div><div data-mprt="9" class="minimap slider-mouseover" role="presentation" aria-hidden="true" style="position: absolute; left: 0px; width: 0px; height: 140px;"><div class="minimap-shadow-hidden" style="height: 140px;"></div><canvas width="0" height="252" style="position: absolute; left: 0px; width: 0px; height: 140px;"></canvas><canvas class="minimap-decorations-layer" width="0" height="252" style="position: absolute; left: 0px; width: 0px; height: 140px;"></canvas><div class="minimap-slider" style="position: absolute; transform: translate3d(0px, 0px, 0px); contain: strict; width: 0px;"><div class="minimap-slider-horizontal" style="position: absolute; width: 0px; height: 0px;"></div></div></div><div role="presentation" aria-hidden="true" class="blockDecorations-container"></div></div><div data-mprt="2" class="overflowingContentWidgets"></div><div data-mprt="5" class="overflowingOverlayWidgets"></div></div></div><div class="editor modified" style="position: absolute; height: 100%; visibility: visible; left: 0px; width: 738.891px;" data-keybinding-context="93" data-mode-id="worktree-typescript"><div class="monaco-editor modified-in-monaco-diff-editor no-user-select  showUnused showDeprecated vs-dark" role="code" data-uri="composer-code-block-anysphere://xixjqogfkq" style="width: 738px; height: 140px;"><div data-mprt="3" class="overflow-guard" style="width: 738px; height: 140px;"><textarea data-mprt="7" class="inputarea monaco-mouse-cursor-text" wrap="off" autocorrect="off" autocapitalize="off" autocomplete="off" spellcheck="false" aria-label="The editor is not accessible at this time. To enable screen reader optimized mode, use Shift+Alt+F1" aria-required="false" tabindex="0" role="textbox" aria-roledescription="editor" aria-multiline="true" aria-autocomplete="none" style="tab-size: 26.3906px; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; top: 114px; left: 162px; width: 1px; height: 1px;"></textarea><div style="position: absolute; top: 0px; left: 0px; width: 0px; height: 0px;" class="monaco-editor-background textAreaCover"></div><div class="margin" role="presentation" aria-hidden="true" style="position: absolute; contain: strict; top: 0px; height: 140px; width: 10px;"><div class="glyph-margin" style="left: 0px; width: 0px; height: 140px;"></div><div class="margin-view-zones" role="presentation" aria-hidden="true" style="position: absolute; width: 10px;"><div class="inline-deleted-margin-view-zone" monaco-view-zone="i1" style="font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; z-index: 10; position: absolute; width: 100%; display: block; top: 82px; height: 16px;"><div class="codicon codicon-light-bulb lightbulb-glyph" style="position: absolute; right: 0px; visibility: hidden; height: 16px; line-height: 16px; top: 0px;"></div></div></div><div class="margin-view-overlays" role="presentation" aria-hidden="true" style="position: absolute; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; width: 10px; height: 140px;"><div style="top:6px;height:16px;"></div><div style="top:22px;height:16px;"><div class="cmdr gutter-insert" style=""></div></div><div style="top:38px;height:16px;"></div><div style="top:66px;height:16px;"></div><div style="top:98px;height:16px;"><div class="cmdr gutter-insert" style=""></div></div><div style="top:114px;height:16px;"><div class="current-line" style="width:10px"></div></div></div><div class="glyph-margin-widgets" style="position: absolute; top: 0px;"></div></div><div class="monaco-scrollable-element editor-scrollable vs-dark" role="presentation" data-mprt="6" style="position: absolute; overflow: hidden; left: 10px; width: 728px; height: 140px;"><div class="lines-content monaco-editor-background" style="position: absolute; overflow: hidden; width: 1.67772e+07px; height: 1.67772e+07px; contain: strict; top: 0px; left: 0px;"><div class="view-overlays" role="presentation" aria-hidden="true" style="position: absolute; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; height: 0px; width: 1062px;"><div style="top:6px;height:16px;"></div><div style="top:22px;height:16px;"><div class="cdr char-insert" style="left:0;width:100%;"></div><div class="cdr line-insert" style="left:0;width:100%;"></div></div><div style="top:38px;height:16px;"></div><div style="top:66px;height:16px;"></div><div style="top:98px;height:16px;"><div class="cdr line-insert" style="left:0;width:100%;"></div><div class="cdr char-insert" style="left:739px;width:284px;"></div></div><div style="top:114px;height:16px;"></div></div><div role="presentation" aria-hidden="true" class="view-rulers"></div><div class="view-zones" role="presentation" aria-hidden="true" style="position: absolute; width: 1062px;"><div class="view-lines line-delete monaco-mouse-cursor-text" monaco-view-zone="i1" style="font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; position: absolute; width: 100%; display: block; top: 82px; height: 16px;" monaco-visible-view-zone="true"><div class="view-line" style="top:0px;width:1000000px;"><span><span class="mtk11">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;http-equiv="Content-Security-Policy"&nbsp;con</span><span class="mtk11">tent="default-src&nbsp;'none';&nbsp;frame-src&nbsp;</span><span class="mtk13">${</span><span class="mtk15">websiteUrl</span><span class="mtk13">}</span><span class="mtk11">;"&gt;</span></span></div></div><div monaco-view-zone="i2" style="position: absolute; width: 100%; display: block; top: 54px; height: 12px;" monaco-visible-view-zone="true"></div></div><div class="view-lines monaco-mouse-cursor-text" role="presentation" aria-hidden="true" data-mprt="8" style="position: absolute; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; width: 1062px; height: 140px;"><div style="top:6px;height:16px;" class="view-line"><span><span class="mtk1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="mtk5">const</span><span class="mtk1">&nbsp;</span><span class="mtk15">websiteUrl</span><span class="mtk1">&nbsp;</span><span class="mtk5">=</span><span class="mtk1">&nbsp;</span><span class="mtk13">'</span><span class="mtk11">https://typewords.cc</span><span class="mtk13">'</span><span class="mtk5">;</span></span></div><div style="top:22px;height:16px;" class="view-line"><span><span class="mtk1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="mtk5">const</span><span class="mtk1">&nbsp;</span><span class="mtk15">cdnUrl</span><span class="mtk1">&nbsp;</span><span class="mtk5">=</span><span class="mtk1">&nbsp;</span><span class="mtk13">'</span><span class="mtk11">https://type-words-4n6djfw59l.edgeone.cool</span><span class="mtk13">'</span><span class="mtk5">;</span></span></div><div style="top:38px;height:16px;" class="view-line"><span><span></span></span></div><div style="top:66px;height:16px;" class="view-line"><span><span class="mtk11">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;charset="UTF-8"&gt;</span></span></div><div style="top:98px;height:16px;" class="view-line"><span><span class="mtk11">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;http-equiv="Content-Security-Policy"&nbsp;con</span><span class="mtk11">tent="default-src&nbsp;'none';&nbsp;frame-src&nbsp;</span><span class="mtk13">${</span><span class="mtk15">websiteUrl</span><span class="mtk13">}</span><span class="mtk11">;&nbsp;script-src&nbsp;</span><span class="mtk13">${</span><span class="mtk15">cdnUrl</span><span class="mtk13">}</span><span class="mtk11">;&nbsp;style-src&nbsp;</span><span class="mtk13">${</span><span class="mtk15">cdnUrl</span><span class="mtk13">}</span><span class="mtk11">;"&gt;</span></span></div><div style="top:114px;height:16px;" class="view-line"><span><span class="mtk11">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;name="viewport"&nbsp;content="width=device-wi</span><span class="mtk11">dth,&nbsp;initial-scale=1.0"&gt;</span></span></div></div><div data-mprt="1" class="contentWidgets" style="position: absolute; top: 0px;"></div><div role="presentation" aria-hidden="true" class="cursors-layer cursor-line-thin-style cursor-solid"><div class="cursor  monaco-mouse-cursor-text " style="height: 16px; top: 114px; left: 152px; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; display: block; visibility: hidden; padding-left: 0px; width: 0.555556px;"></div></div></div><div role="presentation" aria-hidden="true" class="invisible scrollbar horizontal fade" style="position: absolute; width: 728px; height: 6px; left: 0px; bottom: 0px;"><div class="slider" style="position: absolute; top: 0px; left: 0px; height: 6px; transform: translate3d(0px, 0px, 0px); contain: strict; width: 499px;"></div></div><canvas class="decorationsOverviewRuler" aria-hidden="true" width="0" height="252" style="position: absolute; transform: translate3d(0px, 0px, 0px); contain: strict; top: 0px; right: 0px; width: 0px; height: 140px; display: block;"></canvas><div role="presentation" aria-hidden="true" class="invisible scrollbar vertical" style="position: absolute; width: 0px; height: 140px; right: 0px; top: 0px;"><div class="slider" style="position: absolute; top: 0px; left: 0px; width: 0px; transform: translate3d(0px, 0px, 0px); contain: strict; height: 140px;"></div></div></div><div role="presentation" aria-hidden="true" style="width: 738px;"></div><div data-mprt="4" class="overlayWidgets" style="width: 738px;"><div class="diff-hidden-lines-widget" widgetid="managedOverlayWidget-25" style="position: absolute; height: 12px; top: 54px;"><div class="diff-hidden-lines-compact"><div class="line-left"></div><div class="text">3 hidden lines</div><div class="line-right"></div></div></div></div><div data-mprt="9" class="minimap slider-mouseover" role="presentation" aria-hidden="true" style="position: absolute; left: 0px; width: 0px; height: 140px;"><div class="minimap-shadow-hidden" style="height: 140px;"></div><canvas width="0" height="252" style="position: absolute; left: 0px; width: 0px; height: 140px;"></canvas><canvas class="minimap-decorations-layer" width="0" height="252" style="position: absolute; left: 0px; width: 0px; height: 140px;"></canvas><div class="minimap-slider" style="position: absolute; transform: translate3d(0px, 0px, 0px); contain: strict; width: 0px;"><div class="minimap-slider-horizontal" style="position: absolute; width: 0px; height: 0px;"></div></div></div><div role="presentation" aria-hidden="true" class="blockDecorations-container"></div></div><div data-mprt="2" class="overflowingContentWidgets"></div><div data-mprt="5" class="overflowingOverlayWidgets"></div></div></div><div class="accessibleDiffViewer" style="position: absolute; height: 100%; visibility: hidden;"></div><svg class="moved-blocks-lines" style="left: 5px; height: 140px; width: 6px;"></svg></div></div></div><div style="position: absolute; inset: 0px; pointer-events: none;"></div><div class="composer-message-codeblock-expand" style="z-index: 1;"><span class="codicon codicon-chevron-up"></span></div></div></div></div></div></div></div><div tabindex="0" data-message-index="16" data-message-id="29d81715-f051-474a-bce4-ae55cfaccc63" data-message-role="ai" data-message-kind="assistant" class="relative composer-rendered-message hide-if-empty composer-message-blur" id="bubble-ae55cfaccc63" style="display: block; outline: none; padding: 0px 18px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div style="position: sticky; top: 0px;"><div style="padding: 0px 2px;"><span class="anysphere-markdown-container-root" style="user-select: text; font-size: 1em; line-height: 1.5; min-height: 22.2px;"><section id="markdown-section-29d81715-f051-474a-bce4-ae55cfaccc63-0" class="markdown-section" data-markdown-raw="检查是否有语法错误：" data-section-index="0"><span>检查是否有语法错误：</span></section></span></div></div></div></div><div tabindex="0" data-tool-call-id="tool_a67b3cce-707d-4da5-b117-85cb5da7b5f" data-tool-status="completed" data-message-index="17" data-message-id="ad306373-b8cd-4982-9342-7e4da667f2c1" data-message-role="ai" data-message-kind="tool" class="relative composer-rendered-message hide-if-empty composer-message-blur" id="bubble-7e4da667f2c1" style="display: block; outline: none; padding: 0px 18px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div class="composer-tool-former-message" style="padding: 0px 2px;"><div><div class="collapsible-clean undefined" style="display: flex; flex-direction: column; gap: 2px; overflow-anchor: none;"><div style="display: flex; flex-direction: row; align-items: center; gap: 4px; cursor: pointer; width: 100%; max-width: 100%; box-sizing: border-box; overflow: hidden;"><div style="display: flex; gap: 4px; overflow: hidden;"><div class="collapsible-header-text" style="flex: 0 1 auto; min-width: 0px; display: flex; align-items: center; overflow: hidden; gap: 4px; color: var(--cursor-text-tertiary); transition: opacity 0.1s ease-in; font-size: 12px;"><span class="" style="flex: 0 1 auto; min-width: 0px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;"><span style="color: var(--cursor-text-secondary); white-space: nowrap;">No linter errors found</span></span><div class="codicon codicon-chevron-right !text-[18px] chevron-right" style="color: var(--vscode-foreground); line-height: 14px; width: 21px; height: auto; display: flex; justify-content: flex-start; align-items: center; transform-origin: 45% 55%; transition: transform 0.15s ease-in-out, opacity 0.2s ease-in-out, color 0.1s ease-in; flex-shrink: 0; cursor: pointer; --chevron-opacity: 0.6; transform: rotate(90deg); animation: 0.1s ease-in 0s 1 normal forwards running chevronFadeIn;"></div></div></div></div><div class="collapsible-clean-children undefined" style="padding-left: 0px; overflow-anchor: none; margin-top: 4px; margin-bottom: 4px;"><div style="color: var(--vscode-foreground); opacity: 0.4; font-size: 12px; padding: 0px 6px 0px 16px;">No linter errors found</div></div></div></div></div></div></div><div tabindex="0" data-message-index="18" data-message-id="6387f4dc-52f5-4635-a98b-293d8c8db300" data-message-role="ai" data-message-kind="assistant" class="relative composer-rendered-message hide-if-empty composer-message-blur" id="bubble-293d8c8db300" style="display: block; outline: none; padding: 0px 18px; background-color: var(--composer-pane-background); opacity: 1; z-index: 99;"><div class="" style="background-color: transparent;"><div style="position: sticky; top: 0px;"><div style="padding: 0px 2px;"><span class="anysphere-markdown-container-root" style="user-select: text; font-size: 1em; line-height: 1.5; min-height: 22.2px;"><section id="markdown-section-6387f4dc-52f5-4635-a98b-293d8c8db300-0" class="markdown-section" data-markdown-raw="已修复 CSP 配置问题。" data-section-index="0"><span>已修复 CSP 配置问题。</span></section><section id="markdown-section-6387f4dc-52f5-4635-a98b-293d8c8db300-1" class="markdown-section" data-markdown-raw="

## 修复内容" data-section-index="1"><h2><span>修复内容</span></h2></section><section id="markdown-section-6387f4dc-52f5-4635-a98b-293d8c8db300-2" class="markdown-section" data-markdown-raw="
" data-section-index="2"></section><section id="markdown-section-6387f4dc-52f5-4635-a98b-293d8c8db300-3" class="markdown-section" data-markdown-raw="
在 `vscode/src/extension.ts` 中更新了 Content Security Policy：" data-section-index="3"><span>在 </span><span class="markdown-inline-code leading-[1.4]" style="word-break: break-all; font-family: Consolas, &quot;Courier New&quot;, monospace, Menlo, Monaco, &quot;Courier New&quot;, monospace; cursor: default; color: inherit;"><span>vscode/src/extension.ts</span></span><span> 中更新了 Content Security Policy：</span></section><section id="markdown-section-6387f4dc-52f5-4635-a98b-293d8c8db300-4" class="markdown-section" data-markdown-raw="

1. 添加了 `cdnUrl` 变量，指向 CDN 地址
2. 在 CSP 中添加了 `script-src ${cdnUrl}`，允许从 CDN 加载脚本
3. 在 CSP 中添加了 `style-src ${cdnUrl}`，允许从 CDN 加载样式表" data-section-index="4"><ol style="margin: 0px 0px 0px 16px; padding: 0px;"><li data-indent="0" value="1" style="margin-left: 0px; padding-top: 2px; padding-bottom: 2px; list-style-type: decimal;"><span>添加了 </span><span class="markdown-inline-code leading-[1.4]" style="word-break: break-all; font-family: Consolas, &quot;Courier New&quot;, monospace, Menlo, Monaco, &quot;Courier New&quot;, monospace; cursor: default; color: inherit;"><span>cdnUrl</span></span><span> 变量，指向 CDN 地址</span></li></ol><ol style="margin: 0px 0px 0px 16px; padding: 0px;"><li data-indent="0" value="2" style="margin-left: 0px; padding-top: 2px; padding-bottom: 2px; list-style-type: decimal;"><span>在 CSP 中添加了 </span><span class="markdown-inline-code leading-[1.4]" style="word-break: break-all; font-family: Consolas, &quot;Courier New&quot;, monospace, Menlo, Monaco, &quot;Courier New&quot;, monospace; cursor: default; color: inherit;"><span>script-src ${cdnUrl}</span></span><span>，允许从 CDN 加载脚本</span></li></ol><ol style="margin: 0px 0px 0px 16px; padding: 0px;"><li data-indent="0" value="3" style="margin-left: 0px; padding-top: 2px; padding-bottom: 2px; list-style-type: decimal;"><span>在 CSP 中添加了 </span><span class="markdown-inline-code leading-[1.4]" style="word-break: break-all; font-family: Consolas, &quot;Courier New&quot;, monospace, Menlo, Monaco, &quot;Courier New&quot;, monospace; cursor: default; color: inherit;"><span>style-src ${cdnUrl}</span></span><span>，允许从 CDN 加载样式表</span></li></ol></section><section id="markdown-section-6387f4dc-52f5-4635-a98b-293d8c8db300-5" class="markdown-section" data-markdown-raw="
" data-section-index="5"></section><section id="markdown-section-6387f4dc-52f5-4635-a98b-293d8c8db300-6" class="markdown-section" data-markdown-raw="
修改后的 CSP 策略：" data-section-index="6"><span>修改后的 CSP 策略：</span></section><section id="markdown-section-6387f4dc-52f5-4635-a98b-293d8c8db300-7" class="markdown-section" data-markdown-raw="
```html
default-src 'none'; frame-src ${websiteUrl}; script-src ${cdnUrl}; style-src ${cdnUrl};
```" data-section-index="7"><div class="markdown-code-outer-container markdown-block-code"><div style="height: 100%; width: 100%;"><div class="composer-code-block-container composer-message-codeblock display-codeblock" style="margin: 4px 0px;"><div style="position: relative;"><div class="composer-codeblock-copy-overlay" style="position: absolute; top: 6px; right: 6px; z-index: 10; align-items: center; background: linear-gradient(to left, var(--vscode-editor-background) 80%, transparent 100%); display: none;"><div class="anysphere-icon-button bg-[transparent] border-none text-[var(--cursor-text-primary)] flex w-4 items-center justify-center  " style="height: 20px; width: 20px;"><span class="codicon codicon-copy-two  !text-[12px] "></span></div></div><div class="composer-code-block-content" style="box-sizing: border-box; position: relative; background: var(--vscode-editor-background); overflow: auto hidden;" data-mode-id="worktree-html"><div style="width: 100%; box-sizing: border-box; position: relative;" data-keybinding-context="86" data-mode-id="worktree-html"><div class="monaco-editor no-user-select  showUnused showDeprecated vs-dark" role="code" data-uri="display-codeblock://9mvkol830g" style="width: 728px; height: 28px;"><div data-mprt="3" class="overflow-guard" style="width: 728px; height: 28px;"><textarea data-mprt="7" class="inputarea monaco-mouse-cursor-text" wrap="off" autocorrect="off" autocapitalize="off" autocomplete="off" spellcheck="false" aria-label="The editor is not accessible at this time. To enable screen reader optimized mode, use Shift+Alt+F1" aria-required="false" tabindex="0" role="textbox" aria-roledescription="editor" aria-multiline="true" aria-autocomplete="none" style="tab-size: 26.3906px; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; top: 6px; left: 0px; width: 1px; height: 1px;"></textarea><div style="position: absolute; top: 0px; left: 0px; width: 0px; height: 0px;" class="monaco-editor-background textAreaCover"></div><div class="margin" role="presentation" aria-hidden="true" style="position: absolute; transform: translate3d(0px, 0px, 0px); contain: strict; top: 0px; height: 28px; width: 0px;"><div class="glyph-margin" style="left: 0px; width: 0px; height: 28px;"></div><div class="margin-view-zones" role="presentation" aria-hidden="true" style="position: absolute;"></div><div class="margin-view-overlays" role="presentation" aria-hidden="true" style="position: absolute; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; width: 0px; height: 28px;"><div style="top:6px;height:16px;"><div class="current-line" style="width:0px"></div></div></div><div class="glyph-margin-widgets" style="position: absolute; top: 0px;"></div></div><div class="monaco-scrollable-element editor-scrollable vs-dark" role="presentation" data-mprt="6" style="position: absolute; overflow: hidden; left: 0px; width: 728px; height: 28px;"><div class="lines-content monaco-editor-background" style="position: absolute; overflow: hidden; width: 1.67772e+07px; height: 1.67772e+07px; transform: translate3d(0px, 0px, 0px); contain: strict; top: 0px; left: 0px;"><div class="view-overlays" role="presentation" aria-hidden="true" style="position: absolute; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; height: 0px; width: 728px;"><div style="top:6px;height:16px;"></div></div><div role="presentation" aria-hidden="true" class="view-rulers"></div><div class="view-zones" role="presentation" aria-hidden="true" style="position: absolute;"></div><div class="view-lines monaco-mouse-cursor-text" role="presentation" aria-hidden="true" data-mprt="8" style="position: absolute; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; width: 728px; height: 28px;"><div style="top:6px;height:16px;" class="view-line"><span><span class="mtk1">default-src&nbsp;'none';&nbsp;frame-src&nbsp;${websiteUrl};&nbsp;scrip</span><span class="mtk1">t-src&nbsp;${cdnUrl};&nbsp;style-src&nbsp;${cdnUrl};</span></span></div></div><div data-mprt="1" class="contentWidgets" style="position: absolute; top: 0px;"></div><div role="presentation" aria-hidden="true" class="cursors-layer cursor-line-style cursor-solid"><div class="cursor  monaco-mouse-cursor-text " style="height: 16px; top: 6px; left: 0px; font-family: Consolas, &quot;Courier New&quot;, monospace; font-weight: normal; font-size: 12px; font-feature-settings: &quot;liga&quot; 0, &quot;calt&quot; 0; font-variation-settings: normal; line-height: 16px; letter-spacing: 0px; display: block; visibility: hidden; padding-left: 0px; width: 1.66667px;"></div></div></div><div role="presentation" aria-hidden="true" class="invisible scrollbar horizontal" style="position: absolute; width: 728px; height: 10px; left: 0px; bottom: 0px;"><div class="slider" style="position: absolute; top: 0px; left: 0px; height: 10px; transform: translate3d(0px, 0px, 0px); contain: strict; width: 728px;"></div></div><canvas class="decorationsOverviewRuler" aria-hidden="true" width="0" height="50" style="position: absolute; transform: translate3d(0px, 0px, 0px); contain: strict; top: 0px; right: 0px; width: 0px; height: 28px; display: block;"></canvas><div role="presentation" aria-hidden="true" class="invisible scrollbar vertical" style="position: absolute; width: 0px; height: 28px; right: 0px; top: 0px;"><div class="slider" style="position: absolute; top: 0px; left: 0px; width: 0px; transform: translate3d(0px, 0px, 0px); contain: strict; height: 28px;"></div></div></div><div role="presentation" aria-hidden="true" style="width: 728px;"></div><div data-mprt="4" class="overlayWidgets" style="width: 728px;"></div><div data-mprt="9" class="minimap slider-mouseover" role="presentation" aria-hidden="true" style="position: absolute; left: 0px; width: 0px; height: 28px;"><div class="minimap-shadow-hidden" style="height: 28px;"></div><canvas width="0" height="50" style="position: absolute; left: 0px; width: 0px; height: 28px;"></canvas><canvas class="minimap-decorations-layer" width="0" height="50" style="position: absolute; left: 0px; width: 0px; height: 28px;"></canvas><div class="minimap-slider" style="position: absolute; transform: translate3d(0px, 0px, 0px); contain: strict; width: 0px;"><div class="minimap-slider-horizontal" style="position: absolute; width: 0px; height: 0px;"></div></div></div><div role="presentation" aria-hidden="true" class="blockDecorations-container"></div></div><div data-mprt="2" class="overflowingContentWidgets"></div><div data-mprt="5" class="overflowingOverlayWidgets"></div></div></div></div></div></div></div></div></section><section id="markdown-section-6387f4dc-52f5-4635-a98b-293d8c8db300-8" class="markdown-section" data-markdown-raw="
" data-section-index="8"></section><section id="markdown-section-6387f4dc-52f5-4635-a98b-293d8c8db300-9" class="markdown-section" data-markdown-raw="
这样即可允许从 `https://type-words-4n6djfw59l.edgeone.cool` 加载脚本和样式表，解决 CSP 违规错误。" data-section-index="9"><span>这样即可允许从 </span><span class="markdown-inline-code leading-[1.4]" style="word-break: break-all; font-family: Consolas, &quot;Courier New&quot;, monospace, Menlo, Monaco, &quot;Courier New&quot;, monospace; cursor: pointer; color: var(--vscode-textLink-foreground);"><span>https://type-words-4n6djfw59l.edgeone.cool</span></span><span> 加载脚本和样式表，解决 CSP 违规错误。</span></section><section id="markdown-section-6387f4dc-52f5-4635-a98b-293d8c8db300-10" class="markdown-section" data-markdown-raw="
" data-section-index="10"></section><section id="markdown-section-6387f4dc-52f5-4635-a98b-293d8c8db300-11" class="markdown-section" data-markdown-raw="
如果应用还需要加载其他资源（如图片、字体或发送网络请求），可以继续添加相应的 CSP 指令（如 `img-src`、`font-src`、`connect-src`）。" data-section-index="11"><span>如果应用还需要加载其他资源（如图片、字体或发送网络请求），可以继续添加相应的 CSP 指令（如 </span><span class="markdown-inline-code leading-[1.4]" style="word-break: break-all; font-family: Consolas, &quot;Courier New&quot;, monospace, Menlo, Monaco, &quot;Courier New&quot;, monospace; cursor: default; color: inherit;"><span>img-src</span></span><span>、</span><span class="markdown-inline-code leading-[1.4]" style="word-break: break-all; font-family: Consolas, &quot;Courier New&quot;, monospace, Menlo, Monaco, &quot;Courier New&quot;, monospace; cursor: default; color: inherit;"><span>font-src</span></span><span>、</span><span class="markdown-inline-code leading-[1.4]" style="word-break: break-all; font-family: Consolas, &quot;Courier New&quot;, monospace, Menlo, Monaco, &quot;Courier New&quot;, monospace; cursor: default; color: inherit;"><span>connect-src</span></span><span>）。</span></section></span></div></div></div></div><div class="composer-pane-controls-feedback composer-message-blur " style="display: flex; flex-direction: column; width: 100%; box-sizing: border-box; background-color: var(--composer-pane-background); z-index: 99; padding: 4px 18px 8px;"><div style="display: flex; gap: 4px; align-items: center; flex-wrap: wrap;"><div class="group" style="display: flex; flex-direction: row; justify-content: space-between; overflow: visible; align-self: flex-end; flex: 1 1 0%;"><div style="display: flex; flex-direction: row; align-items: center; height: fit-content; margin-left: auto; gap: 4px;"><div class="anysphere-icon-button bg-[transparent] border-none text-[var(--cursor-text-primary)] flex w-4 items-center justify-center  " style="display: flex; justify-content: center; align-items: center; width: 20px; height: 0px;"><span class="codicon codicon-ellipsis-two  !text-[14px] "></span></div></div></div></div></div></div>
