在 JavaScript 中,跨域請求通常是通過 AJAX 發(fā)起的。為了解決跨域問題,您可以使用以下方法:
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();
});
// 其他路由和中間件
<script>
標簽來實現(xiàn)跨域請求的技術。它利用了瀏覽器允許跨域引用 JavaScript 腳本的特性。然而,JSONP 只支持 GET 請求,并且安全性較低。以下是一個使用 JSONP 的示例:<!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>
在服務器端,您需要將返回的數(shù)據(jù)包裹在一個調(diào)用 handleResponse
函數(shù)的參數(shù)中:
handleResponse({"key": "value"});
http-proxy-middleware
中間件來實現(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': ''
}
}));
// 其他路由和中間件
現(xiàn)在,當您向 /api
發(fā)送請求時,它將被代理到 https://example.com
。
請注意,這些方法各有優(yōu)缺點。CORS 是最現(xiàn)代且安全的解決方案,但需要服務器端支持。JSONP 只支持 GET 請求,安全性較低。代理服務器可以解決所有類型的跨域問題,但需要額外的服務器資源。您可以根據(jù)項目需求選擇合適的方法。