javascript - 如何在 Image() 构造函数中发送 cookie

标签 javascript image cookies

我正在将图像注入(inject)到 Canvas 中,我必须通过随我的请求传递 cookie 来安全地获取该图像。我的问题是,当设置 src 时,Image 构造函数似乎没有随请求发送 cookie。 cookies不能通过js访问,它们是由浏览器发送的。

var img = new Image();
img.setAttribute('crossOrigin', 'anonymous');

validateUrl(originalUrl, function (validatedUrl) {
    img.src = validatedUrl; //GET fails after this happens
});

img.onload = function () {
   drawImageProp(context, img);
}

最佳答案

如果您在图像上设置了 crossorigin 属性,则 Cookie 不会随图像请求一起发送。这就是该功能的编写方式。

Cookie 与特定域/子域相关联(并且可以选择与该域内的路径相关联)。请求图像时,请求图像的域的任何 cookie 将自动与图像请求一起发送。

浏览器仅允许 Javascript 访问与主机网页同源的 cookie。因此,Javascript 无法读取其他域的 cookie。

因此,当您通过设置 .src 属性请求图像时,属于图像 URL 域的任何 cookie 将自动随图像请求一起发送(您无需执行任何操作)导致这种情况)。

关于javascript - 如何在 Image() 构造函数中发送 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33445659/

相关文章:

javascript - Typescript无法实现通用函数接口(interface)

javascript - 将带有自定义 cookie 的 Ajax 请求发送到另一个域

javascript - 如何使用 CSS 动态调整图像以调整浏览器窗口的大小

javascript - 如何在 Javascript 中保存带有换行符的 cookie?

cookies - 谷歌 NID Cookie

javascript - 无法导航到 react-router-dom URL

javascript - HTML/JS : Confused about method to create an image button

javascript - Leaflet:检索 KML 多边形的边界

css - 当我将边框设置为无时,IE8 输入类型图像甚至显示边框

image - 如何在 flutter 中将图像大小压缩到 5MB