Kros的博客 Kros的博客
首页
  • CSS
  • 工具
  • Vue
  • js
  • Vue3
  • 算法
  • 折腾笔记
一言
  • 分类
  • 标签
  • 归档
码云

Kros

凡心所向,素履以往,生如逆旅,一苇以航
首页
  • CSS
  • 工具
  • Vue
  • js
  • Vue3
  • 算法
  • 折腾笔记
一言
  • 分类
  • 标签
  • 归档
码云
  • 使用img进行跨域

kros
2024-05-20
随笔

使用img进行跨域

使用 <img> 标签进行跨域请求是一种常见的技术,因为 <img> 标签的 src 属性可以加载跨域的图片资源,并且浏览器会发送请求但不阻止响应。这种技术通常用于检测资源的存在性或触发某些跨域行为。以下是如何使用 <img> 标签进行跨域请求的步骤:

  1. 创建一个 <img> 标签: 动态创建一个 <img> 元素,并设置其 src 属性为需要跨域访问的URL。
var img = new Image();
img.src = 'https://example.com/cross-origin-image.png';
1
2
  1. 监听加载事件: 通过监听 load 事件,你可以知道图片是否成功加载。
img.onload = function() {
  console.log('Image loaded successfully.');
  // 在这里执行图片加载成功后的代码
};
1
2
3
4
  1. 监听错误事件: 同样,监听 error 事件可以捕获加载失败的情况。
img.onerror = function() {
  console.log('Image failed to load.');
  // 在这里执行图片加载失败后的代码
};
1
2
3
4
  1. 使用跨域资源共享(CORS): 如果服务器支持CORS,你可以在 <img> 标签上设置 crossOrigin 属性,并确保服务器返回适当的 Access-Control-Allow-Origin 头。
img.crossOrigin = 'anonymous'; // 或使用 'use-credentials' 如果需要凭证
1
  1. 获取响应数据: 如果图片成功加载,你可以通过 img 对象的一些属性获取信息,如 naturalWidth 和 naturalHeight 来确定图片是否真实存在。
if (img.naturalWidth > 0 && img.naturalHeight > 0) {
  console.log('Image exists and is not broken.');
} else {
  console.log('Image is broken or server does not support CORS.');
}
1
2
3
4
5

请注意,使用 <img> 标签进行跨域请求有以下限制:

  • 只能用于加载图片资源。
  • 无法获取除了图片尺寸之外的任何响应数据。
  • 无法处理非图片类型的响应,如JSON、XML等。

如果你需要更复杂的跨域数据交互,考虑使用CORS、JSONP或现代的Fetch API配合CORS,这些方法可以提供更全面和安全的跨域数据交换解决方案。

上次更新: 2025/09/05, 8:09:00
最近更新
01
Find the next perfect square
09-05
02
Regex validate PIN code
09-05
03
Find the odd int
09-05
更多文章>
Theme by Vdoing | Copyright © 2020-2025 kros king
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
icon-heart-o icon-heart icon-infinity icon-pause icon-play link next prev