//解决跨域问题app.use(async(ctx,next)=>{//指定服务端允许跨域资源的源域access.可以使用通配符*表示允许任意域的JavaScript访问资源,但是在响应携带身份信息(Credential)的HTTP请求时,必须指定具体的域,不能使用通配符ctx.set("Access-Control-Allow-Origin","*");//可选,值为布尔值,表示是否允许客户端在跨域请求时携带身份信息(Cookie或HTTP认证信息),默认,Cookie不包含在CORS请求中,当设置允许请求携带cookie时,需要保证“Access-Control-Allow-Origin”是服务器的域名,而不是“*”;如果这个值不是set,浏览器会忽略这个响应ctx.set("Access-Control-Allow-Credentials",true);//指定服务器允许跨域资源访问的请求方法列表,一般用于响应预检请求ctx.set("Access-Control-Allow-Methods","OPTIONS,GET,PUT,POST,DELETE");//必需的。指定服务器允许跨域资源访问的请求头列表,一般用于响应预检请求ctx.set("Access-Control-Allow-Headers","x-requested-with,accept,origin,content-类型”);//ctx.set("X-Powered-By",'3.2.1')??;//告诉客户端返回数据的MIME类型,这只是一个标识信息,不是真实数据文件的一部分ctx.set("Content-Type","application/json;charset=utf-8");//如果不设置mode,直接设置content-type为application/json,那么fetch会默认这个为跨域模式(mode:'cors'),在跨域POST之前,client会先发送OPTIONS请求“探路”,如果服务器允许,继续POST数据。对于这种OPTIONS请求,需要在服务器配置中允许接受OPTIONS请求,这样就直接允许所有的OPTIONS请求,OPTIONS请求中更详细的信息也可以根据需求判断如果(ctx.request.method=="选项"){ctx.回复。status=200}awaitnext();});
