- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想了解如何为 img 标签使用 crossorigin 属性。我找不到一个很好的例子(我找到的关于启用 CORS 的图像的例子是用 JavaScript 代码解释的,因此我看不到带有 img 标签的 crossorigin 属性。
我有一个猜测,如果我理解有误,请指正。
首先可以编写下面的代码片段来将图像绘制到 Canvas 上:
<canvas id="canvas" width=400 height=400></canvas>
<br><br>
<img id="image" src="http://...." alt="" width="400" height="400">
<script>
function draw() {
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
var img = new Image();
img.crossOrigin = "Anonymous";
img.src = document.getElementById("image").value;
context.drawImage(img, 40, 40);
}
</script>
下面的代码是否等同于上面的代码?它不包含“img.crossOrigin”,但在 img 标签中具有 crossorigin 属性。
<canvas id="canvas" width=400 height=400></canvas>
<br><br>
<img id="image" crossorigin="anonymous"src="http://...." alt="" width="400" height="400">
<script>
function draw() {
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
var img = new Image();
img.src = document.getElementById("image").value;
context.drawImage(img, 40, 40);
}
</script>
说实话我无法进行实验,因为我不知道哪个站点允许将其图像用作 CORS。
我猜想,如果一个站点允许在 canvas 中使用它的图像,如果 CORS 请求是由匿名完成的,那么你可以在 canvas 中绘制它,否则即使请求是由匿名完成的,你也不能在 canvas 中绘制它(我不确定我是否就在这里)。因此,上述两个示例都必须匿名请求 CORS。
您能说一下它们的工作原理是否相同吗?如果不是,能否请您解释一下原因并给我一个使用带有 img 标签的 crossorigin 属性的示例?
最佳答案
由于您使用 #image 元素作为图像的来源,因此您的代码的 2 个版本大致相同。
但是……
img 元素中没有 crossorigin="anonymous"
的版本可能仍会产生跨域违规。
那是因为图像最初加载到 img 元素时没有将跨源标志设置为匿名。
javascript 代码可能使用 img 元素中图像的缓存版本,而不是尝试从 http://... 重新加载它
这意味着缓存的图像数据仍会污染 Canvas ,因为它包含跨源内容。
顺便说一句,您的代码中存在语法错误:
// Not: img.src = document.getElementById("image").value;
img.src = document.getElementById("image").src;
关于img 标签的 HTML crossorigin 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25898035/
我的几个 Controller 上有一个 @CrossOrigin 注释。我希望能够在某处设置一个static final 并让它们全部引用它。像这样的东西: public static final
我使用的是 spring boot 1.5.4 并且 @crossorigin 不能使用 JDK 1.7 进行编译它使用 JDK 1.8 进行编译,但我只需要 1.7 错误:(19, 1) java:
在图像和脚本标签中。 我的理解是您可以访问其他域上的脚本和图像。那么什么时候使用这个属性呢? 这是您想限制其他人访问您的脚本和图像的能力吗? 图片: https://developer.mozilla
在图像和脚本标签中。 我的理解是您可以访问其他域上的脚本和图像。那么什么时候使用这个属性呢? 这是您想限制其他人访问您的脚本和图像的能力吗? 图片: https://developer.mozilla
我遇到错误“从来源‘http://localhost:8081/products/getPro’访问位于‘http://localhost:4200’的 XMLHttpRequest 已被 CORS
我正在尝试定义origins允许执行 REST 服务。我正在研究 Java(1.8)、SpringBoot (1.5.9)。我尝试通过两种方式实现 CORS: @CrossOrigin(origins
我正在使用最新的 Spring Boot (1.2.7.RELEASE)。我想使用@CrossOrigin来自包 org.springframework.web.bind.annotation 的注释
我已将 Spring 版本从 3.0.5 升级到 4.2.5。我可以将 @CrossOrigin 注释(Spring 4.2.5 的新增功能)与之前使用过的注释(例如 @POST、@Path、 一起使
是否可以通过环境变量为 @CrossOrigin 注释指定来源?我想这样做,以便我可以将相同的代码库用于 uat/staging/production。我希望我的 uat/staging 环境可以通过
引用:Prevent HTTP Basic Authentication from displaying prompt for images 为了保护我的用户生成的内容免受这种潜在的“利用”,我将 c
上下文:To quote the Mozilla documentation: Normal script tags will pass minimal information to the wind
我在 react 中使用 cropperjs: 这不适用于跨源图像。但是,当我将“crossOrigin”更改为“crossorigin”时,它将起作用。但我收到了警告: Warning: Unkn
使用特定交叉原点和放置 * 有什么区别? 例如 @CrossOrigin(origins = localhost:8080) or @CrossOrigin(origins = "*") 如果是 *
Spring @CrossOrigin 注释不适用于 DELETE 方法。 示例代码(在 Groovy 中): @CrossOrigin @RestController @RequestMapping
我的 AWS S3 中存储了 MP4 视频文件和 WEBVTT 文件。AWS S3 批量配置到我的子域,可以通过以下方式访问它:http://clip.mydomain.com/bulkname/vi
我尝试将 integrity 和 crossorigin 属性添加到上面的链接,但在 Visual Studio 2015 中都显示为链接标记的无效属性。解决方案是什么。 最佳答案 似乎 Visual
当我从命令行使用 maven 编译任何包含 Spring @org.springframework.web.bind.annotation.CrossOrigin 注释的类时,它编译得很好。但是,当我
我正在尝试将 HTML5 视频播放器集成到我的应用程序中。我的视频源和标题(用于轨道标签)来自不同的域。 当我使用 ... 以上所有代码在 Chrome 不安全模式(禁用网络安全
问题发生在 chrome 浏览器桌面上。尝试将轨道元素添加到视频时出现以下错误: http://jsfiddle.net/itayKinnrot/6Up5t/1/ 当我
我想了解如何为 img 标签使用 crossorigin 属性。我找不到一个很好的例子(我找到的关于启用 CORS 的图像的例子是用 JavaScript 代码解释的,因此我看不到带有 img 标签的
我是一名优秀的程序员,十分优秀!