猿问

付费求助 ThinkPHP5 跨域验证码验证失败

在处理OPTIONS请求的时候做了

 if (isset($_SERVER["HTTP_ORIGIN"])) {
            header('Access-Control-Allow-Origin:' . $_SERVER["HTTP_ORIGIN"]);
        }
        header("Access-Control-Allow-Headers: SET-COOKIE,COOKIE,token,Origin, X-Requested-With, Content-Type,withCredentials");
        header('Access-Control-Allow-Methods: OPTIONS,POST,GET,DELETE,PUT');
        header('Access-Control-Allow-Credentials: true');

        if ($request->isOptions()) {
            exit;
        }

但是验证码还是无法验证成功!
前端 axios 也添加了

axios.defaults.withCredentials = true;

无论是apache还是nginx都是一样的 就算去掉上面的代码 用nginx做跨域处理也是不能解决的!!!!

还是说我在前端获取验证码的方式有问题?

前端用的是vue 获取验证码的时候直接是将验证码的地址给img

 <img :src="captcha" @click="getImgCaptcha">
 getImgCaptcha() {
     this.captcha = this.$api + 'captcha?time=' + Math.random();
},
MM们
浏览 606回答 5
5回答

ITMISS

获取验证码和检验部分接口,都必须携带cookie

梦里花落0921

首先,图片不存在跨域问题,建议你验证一下你请求对图片接口对不对以及请求对图片接口返回的数据是什么。

白板的微信

是跨域问题 还是俩边的session不同而通过不了呢 问题先确认在说解决方案

慕后森

验证码不能显示?还是提交验证时验证失败?问个问题都问不清楚。。。

慕婉清6462132

多谢大家回答 是我前端代码写错了 居然在点击验证验证码的时候同时又去获取了图形验证码 这个获取图形验证码的语句应该是写到响应完毕之后的 所有的回答都赞赏了 感谢大家帮忙!!!
随时随地看视频慕课网APP
我要回答