是否可以将 image.crossOrigin 标记为 "anonymous",即使它不是?
Is it okay to mark image.crossOrigin as "anonymous" even when it is not?
当对具有 canvas api 的图像使用交叉原点 urls 时,如果图像是交叉原点,我会得到一个受污染的 canvas 异常。 MDN Allowing cross-origin use of images and canvas.
更改 crossOrigin="anonymous"
解决了这个问题;但是,总是这样做可以吗?或者我应该先检查 url 以确保它确实是 crossOrigin,然后再将其设置为匿名?
例如
function isCrossOriginURL(url) {
const { location } = window;
const parts = url.match(/^(\w+:)\/\/([^:/?#]*):?(\d*)/i);
return (
parts !== null &&
(parts[1] !== location.protocol ||
parts[2] !== location.hostname ||
parts[3] !== location.port)
);
}
console.log(isCrossOriginURL("https://stacksnippets.net"))
console.log(isCrossOriginURL("https://google.com"))
允许对同源请求设置crossorigin
。在一般情况下,我不建议这样做,因为:
- 没用
- 它可能会产生误导,因为凭据 无论如何都包含在内
但这样做不会破坏您的代码。
总是设置crossorigin=anonymous
是不行的。
crossorigin
属性声明您要对图像执行某些操作,需要使用 CORS 获得许可。
如果服务器未使用 CORS 授予权限,那么您将无法对图像执行通常不需要权限的操作……例如显示完全没有图像。
<img src="https://placem.at/places?h=100&w=100" alt="No CORS needed">
<img src="https://placem.at/places?h=100&w=100" crossorigin=anonymous alt="Requires CORS">
当对具有 canvas api 的图像使用交叉原点 urls 时,如果图像是交叉原点,我会得到一个受污染的 canvas 异常。 MDN Allowing cross-origin use of images and canvas.
更改 crossOrigin="anonymous"
解决了这个问题;但是,总是这样做可以吗?或者我应该先检查 url 以确保它确实是 crossOrigin,然后再将其设置为匿名?
例如
function isCrossOriginURL(url) {
const { location } = window;
const parts = url.match(/^(\w+:)\/\/([^:/?#]*):?(\d*)/i);
return (
parts !== null &&
(parts[1] !== location.protocol ||
parts[2] !== location.hostname ||
parts[3] !== location.port)
);
}
console.log(isCrossOriginURL("https://stacksnippets.net"))
console.log(isCrossOriginURL("https://google.com"))
允许对同源请求设置crossorigin
。在一般情况下,我不建议这样做,因为:
- 没用
- 它可能会产生误导,因为凭据 无论如何都包含在内
但这样做不会破坏您的代码。
总是设置crossorigin=anonymous
是不行的。
crossorigin
属性声明您要对图像执行某些操作,需要使用 CORS 获得许可。
如果服务器未使用 CORS 授予权限,那么您将无法对图像执行通常不需要权限的操作……例如显示完全没有图像。
<img src="https://placem.at/places?h=100&w=100" alt="No CORS needed">
<img src="https://placem.at/places?h=100&w=100" crossorigin=anonymous alt="Requires CORS">