📅  最后修改于: 2023-12-03 15:00:02.312000             🧑  作者: Mango
当使用 XMLHttpRequest(XHR)对象发起跨域请求时,浏览器会检查是否存在跨源资源共享(CORS)策略。
CORS是一种浏览器机制,它使用额外的 HTTP 头来告诉浏览器当前网页所在的域与访问的域之间是否允许跨域请求。通过在服务器端设置这些头信息,服务器可以决定哪些域可以访问该服务器资源,从而保证安全性。
CORS限制了网页的JavaScript脚本只能访问与网页所在的服务器同源的资源。同源指的是协议、域名和端口号完全一致。因此,当你在域名a.com上打开一个网页,浏览器只允许这个网页向a.com发出Ajax请求,而不允许向其他域名发出请求。这时候如果你需要访问其他域名上的资源,则需要使用CORS机制。
如果你在使用 XMLHttpRequest(XHR)对象发起跨域请求时,浏览器检查到不存在跨源资源共享(CORS)策略,就会报错。错误信息通常为 CORS 策略节点 js 已阻止访问 XMLHttpRequest
。要修复这个错误,可以在服务器端设置CORS头信息,允许特定的域名访问资源。
下面是一个Node.js Express服务器如何设置CORS头信息的示例:
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
// REST API endpoints here
app.listen(3000, () => {
console.log('Server started!');
});
在上面的代码片段中,我们使用了Node.js的Express框架,并使用了CORS中间件来设置CORS头信息以允许所有域名访问服务器资源。您也可以使用通配符来允许所有域名访问资源(当然,这可能会增加安全风险):
app.use(cors({
origin: '*'
}));
最后,您也可以在服务器端设置CORS头信息来允许特定域名访问资源:
app.use(cors({
origin: 'http://www.example.com'
}));
总而言之,如果你在使用 XMLHttpRequest(XHR)对象发起跨域请求时遇到了CORS错误,那么通过服务器端设置CORS头信息,允许特定的域访问资源即可解决该问题。