付费求助 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();
},
阅读 4.4k
5 个回答

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

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题