在JavaScript中,跨域请求是指从一个源(域、协议、端口)加载的文档或脚本尝试请求另一个源的资源。由于浏览器的同源策略限制,不同源之间的请求默认是被禁止的,以防止潜在的安全风险。
同源策略:浏览器的一种安全功能,限制了一个源的文档或脚本如何与另一个源的资源进行交互。 跨域资源共享(CORS):一种机制,允许服务器声明哪些源可以访问其资源。
问题:跨域请求被浏览器阻止。 原因:浏览器的同源策略阻止了不同源之间的请求。 解决方法:
Access-Control-Allow-Origin
,指定允许访问的源。Access-Control-Allow-Origin
,指定允许访问的源。<script>
标签来绕过同源策略,但这种方法不安全且仅支持GET请求。假设我们有一个前端应用需要从https://api.example.com/data
获取数据,但该API不允许跨域请求。
服务器端设置CORS头(以Node.js为例):
const express = require('express');
const app = express();
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*'); // 或者指定具体的源
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
next();
});
app.get('/data', (req, res) => {
res.json({ message: 'This is data from the server.' });
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
前端请求:
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
通过这种方式,服务器端设置CORS头后,前端应用就可以成功地进行跨域请求了。
领取专属 10元无门槛券
手把手带您无忧上云