问题所在axios请求会发送两次请求
也就是说,它会先使用options去测试,你这个接口是否能够正常通讯,如果不能就不会发送真正的请求过来,如果测试通讯正常,则开始正常请求。
思路:
跨域-->配置apache允许跨域:
1.修改http.conf
LoadModule headers_module modules/mod_headers.so 注释 允许设置header头
2.设置vhost虚拟配置
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "OPTIONS"
Header always set Access-Control-Allow-Headers "Authorization,DNT,User-Agent,Keep-Alive,Content-Type,accept,origin,X-Requested-With"
发现header头为options 更改路由规则为options,发现network请求两次,options请求成功,又接着post请求
方案一: 所以设置两条路由规则 分别为options和post请求指向同一路由
比如:
'OPTIONS login' => 'login/login',
'POST login' => 'login/login',
方案二: 单独配置OPTIONS处理方法
'OPTIONS login' => 'login/test',
'POST login' => 'login/login',
方案三:避免框架的加载 直接在入口文件处干掉options
web/index.php
if ( $_SERVER['REQUEST_METHOD'] == 'OPTIONS'){
die;
}