当前位置:实例文章 » 其他实例» [文章]【极简 亲测】已拦截跨源请求:同源策略禁止读取位于....的远程资源。(原因:CORS 头缺少 ‘Access-Control-Allow-Origin‘)

【极简 亲测】已拦截跨源请求:同源策略禁止读取位于....的远程资源。(原因:CORS 头缺少 ‘Access-Control-Allow-Origin‘)

发布人:shili8 发布时间:2025-02-07 06:47 阅读次数:0

**已拦截跨源请求:同源策略禁止读取位于...的远程资源**

在 web 开发中,我们经常会遇到一个问题:如何让 JavaScript 脚本能够从不同域名的服务器上获取数据。这个问题的答案就是 CORS(Cross-Origin Resource Sharing),即跨源资源共享。

**什么是同源策略?**

同源策略是一种安全机制,规定浏览器只能从相同的域名、协议和端口读取资源。如果请求来自不同域名、协议或端口,浏览器会拦截该请求,并抛出一个错误。

**什么是 CORS?**

CORS 是一种机制,让服务器能够告知浏览器哪些资源可以被访问。通过设置特定的 HTTP 头部信息,服务器可以告诉浏览器,从哪些域名、协议和端口可以读取资源。

**为什么需要 CORS?**

在传统的同源策略下,如果 JavaScript 脚本从不同域名的服务器上获取数据,浏览器会拦截该请求,并抛出一个错误。这种限制使得开发者难以实现一些功能,如:

* 从第三方 API 获取数据* 使用第三方库或服务* 实现单页应用(SPA)的路由跳转**如何配置 CORS?**

配置 CORS 需要在服务器端设置特定的 HTTP 头部信息。以下是常见的步骤:

1. **定义允许访问的域名**: 在服务器端,需要定义哪些域名可以被访问。
2. **设置 Access-Control-Allow-Origin 头部**: 设置这个头部,让浏览器知道哪些域名可以被访问。
3. **设置其他 CORS 头部信息**: 可选项,根据具体需求,可以设置其他 CORS 头部信息,如 Access-Control-Allow-Methods、Access-Control-Allow-Headers 等。

**示例代码**

以下是 Node.js 中使用 Express 框架配置 CORS 的示例:

javascriptconst express = require('express');
const app = express();

// 允许访问的域名const allowedOrigins = [' ' />
app.use((req, res, next) => {
 const origin = req.header('Origin');
 if (allowedOrigins.includes(origin)) {
 res.setHeader('Access-Control-Allow-Origin', origin);
 res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
 res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
 }
 next();
});

// 其他路由处理函数...

在上面的示例中,我们定义了一个允许访问的域名列表,并设置了 Access-Control-Allow-Origin 头部,让浏览器知道哪些域名可以被访问。

**总结**

CORS 是一种机制,让服务器能够告知浏览器哪些资源可以被访问。通过配置 CORS,开发者可以实现跨源请求,从而获取不同域名的数据。以上是 Node.js 中使用 Express 框架配置 CORS 的示例代码。

相关标签:远程
其他信息

其他资源

Top