在 JavaScript 中,跨域請(qǐng)求通常是通過(guò) AJAX 發(fā)起的。由于瀏覽器的同源策略限制,直接發(fā)起跨域請(qǐng)求可能會(huì)遇到問(wèn)題。為了解決這個(gè)問(wèn)題,可以使用以下幾種方法:
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*'); // 允許所有源訪(fǎng)問(wèn)
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
next();
});
<script>
)實(shí)現(xiàn)跨域請(qǐng)求的方法。它的基本思想是將請(qǐng)求的數(shù)據(jù)包裝在一個(gè)回調(diào)函數(shù)中,并將這個(gè)函數(shù)作為參數(shù)傳遞給一個(gè)全局的回調(diào)函數(shù)。服務(wù)器返回的數(shù)據(jù)將作為該全局函數(shù)的參數(shù)。需要注意的是,JSONP 只支持 GET 請(qǐng)求。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JSONP Example</title>
</head>
<body>
<script>
function handleResponse(data) {
console.log(data);
}
</script>
<script src="https://example.com/api?callback=handleResponse"></script>
</body>
</html>
http-proxy-middleware
中間件來(lái)實(shí)現(xiàn)代理功能:const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
const app = express();
app.use('/api', createProxyMiddleware({
target: 'https://example.com',
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
}));
app.listen(3000);
使用 Axios 發(fā)起跨域請(qǐng)求的示例:
const axios = require('axios');
axios.get('https://example.com/api/data')
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('Error:', error);
});
總之,解決 JavaScript 跨域請(qǐng)求的方法有很多,可以根據(jù)具體需求選擇合適的方法。