如何让NodeJS应用从禁用CORS的服务器通过HTTP请求获取资源?
解决NodeJS中使用Request库访问禁用CORS网站的问题
嘿,这个问题我刚好碰到过!先给你理清楚关键:CORS是浏览器专属的安全策略,NodeJS作为后端运行环境,发起HTTP请求的时候根本不会受这个限制——这也是为什么你用jQuery(浏览器端)会被拦截,但NodeJS的Request库完全可以正常访问的原因!
直接给你上实操步骤:
首先确保你已经安装了Request库(虽然它现在已经被标记为弃用,但如果你的项目指定要用它,还是可以正常用的):
npm install request然后写一段基础的请求代码,这里以GET请求为例,还可以加上模拟浏览器的请求头,避免被目标网站的反爬机制拦截:
const request = require('request'); const targetUrl = '你要访问的目标网站URL'; // 配置请求选项,重点是加上浏览器的User-Agent等头信息 const options = { url: targetUrl, headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } }; // 发起请求 request(options, (error, response, body) => { if (error) { console.error('请求出错:', error); return; } // 打印响应状态码和响应内容 console.log('状态码:', response.statusCode); console.log('响应内容:', body); });
为什么这能行?再给你补个知识点:
浏览器之所以会触发CORS拦截,是因为它会自动在跨域请求里加上Origin头,并且会先发送OPTIONS预检请求,检查服务器是否允许当前Origin访问。但NodeJS发起请求的时候,你完全可以自己控制请求头,既不会自动加Origin(除非你手动设置),也不存在浏览器的预检机制,所以根本不会触发CORS限制。
最后提个小建议:如果后续要换更维护的库,可以考虑用axios或者node-fetch,它们的API更现代,而且还在持续维护,但核心逻辑和上面一样——NodeJS端的HTTP请求不受CORS约束,直接发就行。
内容的提问来源于stack exchange,提问作者babidi
相关产品推荐
相关产品推荐

