在axios请求中出现:
问题描述:
如下图展示,在 请求接口的时候,第一个接口返回200,但是第二个接口却返回0。
上图是请求日本的域名,然而请求国内的域名是没有问题的。
下面对比一下日本预检请求截图
代码里设置了header 的请求截图 (会报CORS错误)
设置header信息的代码注释掉重新请求
对比之后不难发现,多了一个Authorization
然后看一下nginx里请求头部的配置
发现是没有允许Authorization的。
由于接口需要在头部header传递Authorization字段:
vue代码:
执行发送的时候出现以上错误:
意思是预发请求的时候不通过,不再正式发请求
经过反复的测试,发现,header里面包含自定义字段,浏览器是会先发一次options请求,如果请求通过,则继续发送正式的post请求,而如果不通过则返回以上错误
那这样就只能在服务端配置options的请求返回,代码如下:
加上 “Authorization” response.setHeader("Access-Control-Allow-Headers", "Authorization");
上面代码需要加入允许的头部Authorization,并且判断请求的方法是options的时候,返回ok(200)给客户端,这样才能继续发正式的post请求。
修改之后成功发了post请求。
问题已经解决, 普及预检知识:
预检