CORS跨源资源共享:从服务器设置到客户端请求,轻松搞定图像跨域访问
CORS(跨源资源共享)是一种W3C标准,它允许一个域上的资源(比如图像、视频或文本文件)被其他域上的JavaScript代码访问。这通常被称为“跨域请求”。 要在浏览器中使用CORS来请求图像,你需要在服务器上设置适当的响应头。这些响应头告诉浏览器该资源可以被其他域上的JavaScript代码访问。 以下是一个简单的示例,展示了如何在Node.js服务器上设置CORS响应头: ```javascript const express = require('express'); const app = express(); app.use((req, res, next) => { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); next(); }); app.get('/image.jpg', (req, res) => { res.sendFile(__dirname + '/image.jpg'); }); app.listen(3000, () => console.log('Server started on port 3000')); ``` 在这个示例中,我们首先导入了Express模块,并创建了一个新的Express应用。然后,我们使用`app.use()`方法添加了一个中间件,该中间件设置了一些CORS响应头。我们定义了一个路由处理函数,该函数发送一个图像文件作为响应。 现在,你可以在客户端的JavaScript代码中使用`fetch()`或`XMLHttpRequest`来请求这个图像: ```javascript fetch('http://localhost:3000/image.jpg') .then(response => response.blob()) .then(blob => { let objectURL = URL.createObjectURL(blob); let image = document.createElement('img'); image.src = objectURL; document.body.appendChild(image); }); ``` 在这个示例中,我们使用`fetch()`函数来发送一个GET请求到服务器上的`/image.jpg`路由。然后,我们使用`.blob()`方法将响应转换为一个Blob对象,这是浏览器用于表示二进制数据的一种方式。我们使用`URL.createObjectURL()`方法创建一个指向这个Blob对象的URL,然后将这个URL设置为一个新创建的`<img>`元素的`src`属性,以便在页面上显示这个图像。 ######[AI写代码神器 | 477点数解答 | 2023-12-16 23:10:55]
- 易语言实现高并发 HTTP 操作:多线程、线程池与异步操作实战(字节豆包 | 849点数解答 | 2025-06-03 23:17:33)275
- Flask代理FastGPT API代码分析:问题剖析与全面改进建议 (DeepSeek | 713点数解答 | 2025-06-18 16:00:34)220
- 1 秒 300 次访问,系统压力究竟大不大?关键因素全揭秘!(讯飞星火 | 272点数解答 | 2024-02-04 16:02:32)393
- 基于Python Flask与SQL Server的学校查分系统:含注册登录、权限管理及源码 (字节豆包 | 1465点数解答 | 2025-06-02 08:00:48)159
- 苍溪县 2026 全民阅读周:协同发力,书香满城展成效(字节豆包 | 862点数解答 | 2026-03-11 10:27:57)27
- PHP代码:循环检测域名状态,借助HTTP请求与CURL实现(GPT | 947点数解答 | 2024-10-27 11:56:50)266
- PHP实现微信授权登录,完整获取用户信息与手机号流程揭秘(阿里通义 | 1041点数解答 | 2024-11-06 21:46:35)230
- Java 创建 HTTP POST 请求实现文件上传:代码示例与注意要点 (字节豆包 | 300点数解答 | 2024-12-06 16:07:20)348
- 易语言模拟POST请求抓包内容:代码示例及注意要点揭秘(字节豆包 | 1131点数解答 | 2025-06-02 12:46:09)195
- Linux开发:CentOS 6.x 中修改 /etc/inittab 设置默认运行级别及新版系统应对建议 (百度文心 | 281点数解答 | 2023-11-09 18:42:13)320
- Python 字典基本操作全解析:创建、查找与遍历示例( | 313点数解答 | 2024-05-06 09:52:01)386
- PHP 代码转易语言:API 请求及 JSON 处理改写全解析(字节豆包 | 532点数解答 | 2025-01-29 23:05:04)351