【发布时间】:2020-08-27 16:15:36
【问题描述】:
当通过将src 属性设置为Canvas 并尝试在画布上调用toDataURL() 来加载Image 时,只有在加载前设置crossorigin 属性时才允许这样做Image。
这是为什么呢?如果图像具有正确的 Allow-Access-Control-Origin 标头。是不是因为在通过 URL 加载 Image 时没有使用 Origin 属性(即仅在设置了 crossorigin 属性时才包含 Origin 标头)?
【问题讨论】:
-
来自 MDN 文档 - 这会告诉浏览器在尝试下载图像数据时请求跨域访问 - 虽然该文档没有详细说明,但确实如此重要吗?
-
@JaromandaX 这对我的理解很重要。 :)
-
该属性告诉浏览器是否使用跨源请求,以及预期的标头。例如发送凭据。是的,origins 标头是其中的一部分。
-
是的,
img元素src如果设置了crossorigin属性,则 URL 请求仅发送Origin标头。来自html.spec.whatwg.org/… 和html.spec.whatwg.org/#create-a-potential-cors-request; corsAttributeState 只有在设置了crossorigin属性时才会最终成为cors。这导致fetch.spec.whatwg.org/#concept-request-mode,其中仅当模式为cors时才会创建COR 请求。然后到 fetch.spec.whatwg.org/#cors-request,“CORS 请求是一个包含Origin标头的 HTTP 请求”。
标签: javascript html5-canvas cors frontend same-origin-policy