1.6.2.0 vue端跨域问题的bug解决

bug问题 · Fecmall · 于 5年前 发布 · 2138 次阅读

fecshop 1.6.2.0版本,vue对应的appserver端口,存在cors跨域问题

bug已经修复:https://github.com/fecshop/yii2_fecshop/commit/c6cc9a9ae9453b9b787d8e547bab5ed930d4a97f

详细的代码更改参看上面的commit,后面的版本会修复这个问题

如果您想在index.php就将options请求返回,可以在@appserver/web/index.php

<?php
/**
 * 【Appserver端性能优化】:如果vue和appserver是不一样的域名,对于这种跨域的前端和后端交互,需要cros机制,具体您可以自己查阅
 * 原理为:第一次发送options请求,如果请求成功,获取服务端允许的请求类型,然后再发起具体的数据请求
 * 对于options请求,不涉及到数据,因此直接返回即可,因此下面加了下面的代码
 * 对于下面的设置的允许的值,是fecshop目前允许的,如果您添加了其他的,请在下面自行修改
 * 下面的cros的信息要和 @fecshop/app/appserver/modules/AppserverTokenController.php 这个文件里面的设置要一致。
 * 默认,下面是注释掉,您可以根据自己的情况,取消掉下面的注释,让options请求在index.php文件执行的时候直接返回,节省资源。
 */
/*
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    $cors_allow_headers = ['fecshop-uuid','fecshop-lang','fecshop-currency','access-token'];       
    header('Access-Control-Allow-Origin: *');
    header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, ".implode(', ',$cors_allow_headers));
    header('Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS');
    exit;
}
*/

将代码注释去掉,然后将 header('Access-Control-Allow-Origin: *'); 中的* 改成您的vue端域名即可

共收到 0 条回复
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics