You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:13:02