OPTIONS请求方法的主要用途有两个:
- 获取服务器支持的HTTP请求方法。
- 用来检查服务器的性能。例如: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());
可以看到,users路由支持get请求。
405和501状态码
405
405是说,这个请求方法(GET、PUT、DELETE)我们api server认识,但是对于你请求的资源(URI),你使用的方法我们不支持,这叫做方法不允许,同时response要包含一个Allow头,返回支持的HTTP请求方法。
比如上面的链接只支持get方法,但如果我们请求了post方法就会返回405.
501
501是说,你的请求方法(例如PROPFIND方法),我们api server不认识(无法进行匹配),因此叫做未实现。 返回501主要是受限制于API Server实现。
请求Link方法就会得到501,因为koa-router只支持常用的方法,不支持这个方法。