node.js

OPTION请求

OPTIONS请求方法的主要用途有两个:

  1. 获取服务器支持的HTTP请求方法。
  2. 用来检查服务器的性能。例如:AJAX进行跨域请求时的预检,需要向另外一个域名的资源发送一个HTTP OPTIONS请求头,用以判断实际发送的请求是否安全。

在koa-router中相应option请求

获取返回的类型

在koa-router方法中,使用router.allowedMethods() 为某个router开启option请求。

var Koa = require('koa');
var Router = require('koa-router');

var app = new Koa();
var router = new Router();

app.use(router.routes());
app.use(router.allowedMethods());

这样当我们访问时,就可以使用option方式来查看这个链接支持哪些请求。支持的类型在Header中


usersRouter.get(`/`,(ctx)=>{
    ctx.body="users"
})
app.use(usersRouter.routes());
app.use(usersRouter.allowedMethods());
image 14

可以看到,users路由支持get请求。

405和501状态码

405

405是说,这个请求方法(GET、PUT、DELETE)我们api server认识,但是对于你请求的资源(URI),你使用的方法我们不支持,这叫做方法不允许,同时response要包含一个Allow头,返回支持的HTTP请求方法。

比如上面的链接只支持get方法,但如果我们请求了post方法就会返回405.

image 15

501

501是说,你的请求方法(例如PROPFIND方法),我们api server不认识(无法进行匹配),因此叫做未实现。 返回501主要是受限制于API Server实现。

请求Link方法就会得到501,因为koa-router只支持常用的方法,不支持这个方法。

image 16