在Ajax中,浏览器执行跨域请求时,不会向本地主机发送请求。这是由于浏览器的同源策略所限制的。同源策略要求请求的协议、域名和端口都必须相同。
为了解决这个问题,可以使用代理服务器来转发请求。代理服务器将请求发送到目标服务器,并将响应返回给浏览器。
以下是一个使用Node.js创建代理服务器的示例代码:
const http = require('http');
const request = require('request');
// 创建代理服务器
http.createServer((req, res) => {
// 目标服务器地址
const targetUrl = 'http://目标服务器地址' + req.url;
// 发送请求到目标服务器
req.pipe(request(targetUrl)).pipe(res);
}).listen(8000, 'localhost'); // 监听本地的端口
console.log('代理服务器运行在 http://localhost:8000');
在上面的代码中,我们创建了一个代理服务器,并将请求转发到目标服务器。你需要将目标服务器地址替换为你实际想要请求的地址。
然后,你可以在前端代码中使用代理服务器的地址,发送Ajax请求。例如:
$.ajax({
url: 'http://localhost:8000/目标路径',
method: 'GET',
success: function(response) {
console.log(response);
}
});
注意,前端代码中的URL要与代理服务器监听的地址相匹配。这样,浏览器会将请求发送到代理服务器,并由代理服务器转发到目标服务器。
这样的设置可以解决Ajax在同一端口上不向本地主机发送请求的问题,并实现跨域请求。