NodeJS配置CORS实现过程详解

 更新时间:2020年12月02日 14:45:35   作者:王者归来!  
这篇文章主要介绍了NodeJS配置CORS实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

跨域问题主要在header上下功夫

首先提供一个w3c的header定义 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

再提供一个网友提供的header详解 http://kb.cnblogs.com/page/92320/

这两个有助于帮助大家理解header的类型和作用, 但是遗憾的是跨域相关的两个header属性我都没有找到相关的定义,

下面直接告诉大家 1是Access-Control-Allow-Origin 允许的域 2是Access-Control-Allow-Headers 允许的header类型

第一项可以直接设为* 表示任意 但是第二项不能这样写,在chrome中测试跨域发现报错, 最终的代码看起来是这个样子:

app.all('*', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
  res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
  res.header("X-Powered-By",' 3.2.1')
  if(req.method=="OPTIONS") res.send(200);/*让options请求快速返回*/
  else next();
});

另外有cors模块可以用

CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。

整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。

因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。

浏览器将CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request)。

只要同时满足以下两大条件,就属于简单请求。

(1) 请求方法是以下三种方法之一:

  • HEAD
  • GET
  • POST

(2)HTTP的头信息不超出以下几种字段:

  • Accept
  • Accept-Language
  • Content-Language
  • Last-Event-ID

Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain

这是为了兼容表单(form),因为历史上表单一直可以发出跨域请求。AJAX 的跨域设计就是,只要表单可以发,AJAX 就可以直接发。

凡是不同时满足上面两个条件,就属于非简单请求。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 手把手教你使用TypeScript开发Node.js应用

    手把手教你使用TypeScript开发Node.js应用

    为了减少代码编写过程中出现的错误,以及更好的维护你的项目,本文将手把手教你配置一个简单的开发环境来编写Node.js的应用程序,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • 详解webpack打包nodejs项目(前端代码)

    详解webpack打包nodejs项目(前端代码)

    这篇文章主要介绍了webpack打包nodejs项目(前端代码),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Nodejs实现用户注册功能

    Nodejs实现用户注册功能

    本文通过实例代码给大家介绍了Nodejs实现用户注册功能,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • nodejs开发环境配置与使用

    nodejs开发环境配置与使用

    经过几个星期的nodejs学习,从开始的小白到现在渐渐得熟悉,走过来也才算明白,现在已经入门也掌握了相关的学习方法,今天开始记录下自己学习的过程,以便日后查看。
    2014-11-11
  • Nodejs极简入门教程(二):定时器

    Nodejs极简入门教程(二):定时器

    这篇文章主要介绍了Nodejs极简入门教程(二):定时器,本文讲解了setTimeout、setInterval、setImmediate及process.nextTick等内容,需要的朋友可以参考下
    2014-10-10
  • Node.js中Process.nextTick()和Process.setImmediate()的区别

    Node.js中Process.nextTick()和Process.setImmediate()的区别

    这篇文章介绍了Node.js中Process.nextTick()和Process.setImmediate()的区别,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 用node.js写一个jenkins发版脚本

    用node.js写一个jenkins发版脚本

    这篇文章主要介绍了用node.js写一个jenkins发版脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 2014年最火的Node.JS后端框架推荐

    2014年最火的Node.JS后端框架推荐

    用nodejs开发web应用,用哪个框架好?express?还是其他什么?今天小编就来给大家推荐一下今年最好用的几款Node.js后端框架
    2014-10-10
  • node模块机制与异步处理详解

    node模块机制与异步处理详解

    这篇文章主要介绍了node模块机制与异步处理详解的相关资料,需要的朋友可以参考下
    2016-03-03
  • Node.js  REPL (交互式解释器)实例详解

    Node.js REPL (交互式解释器)实例详解

    这篇文章主要介绍了Node.js REPL (交互式解释器)实例详解的相关资料,Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端,我们可以在终端中输入命令,并接收系统的响应,需要的朋友可以参考下
    2017-08-08

最新评论