From 4be67a0bfafc4c4c398621afda5bf39d4bfa3abd Mon Sep 17 00:00:00 2001 From: lmj01 Date: Tue, 9 Apr 2024 10:03:11 +0800 Subject: [PATCH] update --- cg/library/cornerstonejs.md | 3 +++ images/axial_sagittal.webp | Bin 0 -> 31472 bytes web/web.md | 11 ++++++++++- 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 images/axial_sagittal.webp diff --git a/cg/library/cornerstonejs.md b/cg/library/cornerstonejs.md index f7489ad..90661b3 100644 --- a/cg/library/cornerstonejs.md +++ b/cg/library/cornerstonejs.md @@ -15,3 +15,6 @@ yarn run serve-static-examples 就是一个url, url scheme决定某个ImageLoader插件真实的加载图像,Cornerstone3D委托注册的ImageLoader去加载,这样Cornerstone3D就可以同时显示多张图像,来自不同服务上的各种协议 ![image id](../images/cg/ct/image-id-format.png) + +## 文档 +- [一文(10图)了解Cornerstone3D核心概念(万字总结附导图) ](https://juejin.cn/post/7326432875955798027) \ No newline at end of file diff --git a/images/axial_sagittal.webp b/images/axial_sagittal.webp new file mode 100644 index 0000000000000000000000000000000000000000..f4b29ba48585a7c3400319c99ff2f72e19c7fb01 GIT binary patch literal 31472 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 bd^ZyH@^$@-MUn<}MG?jBLC`DgcwT@2DcE0s literal 0 HcmV?d00001 diff --git a/web/web.md b/web/web.md index e605241..a8723f4 100644 --- a/web/web.md +++ b/web/web.md @@ -7,7 +7,6 @@ - [Web 文件系统(OPFS 及工具)介绍](https://hughfenghen.github.io/posts/2024/03/14/web-storage-and-opfs/) - ## 认证机制 目前可参考的方案 @@ -20,6 +19,16 @@ - token在后台可不存储,只需判断是否过期或被篡改否 ![preflight request](../dia/token.png) +### 跨域隔离(Cross Origin Isolation) + +```html + + + +``` +// 使用*允许所有域名,或者只允许你需要的域名,只能写一个域名,不能有通配符,如有多个域名可通过脚本控制返回 +Access-Control-Allow-Origin:https://www.example.com + ## 记住密码