Page: 404 !!!! ,页面找不到 xxx 请先建立相应的module/controller/action ,再访问该URL 【fecshop】

技术分享 · Fecshop · 于 5个月前 发布 · 281 次阅读

一般而言,出现这个错误的原因是,没有相应的controller,也就是没有这个url,404.

但是还有一种情况造成这个原因,是因为存在两个session,造成这个问题

可以看到有一个 fecshop.appadmin.fancyecommerce.com.fancyecommerce.com 的session

这是因为appfront 为了各个store session,在@app/web/index.php 设置了ini_set('session.cookie_domain', '.fancyecommerce.com');,后台和前台是相同的域名,不同的子域,因此也会生效,造成访问后台两个相同的session,进而在csrf部分无法通过,post请求失败

因此,如果后台和前台同一个域名,如果前台开启了 ini_set('session.cookie_domain', '.fancyecommerce.com');, 那么后台也要添加,就是@appadmin/web/index.php的第三行出设置

然后浏览器清空cookie重新登陆即可

1.如果前台(appfront apphtml5)和后台(appadmin)不同的域名,不会出这个问题

2.如果前台(appfront apphtml5)和后台(appadmin)设置了相同的域名,不同的子域,那么如果appfront或者apphtml5开启了ini_set('session.cookie_domain', '.fancyecommerce.com');,那么后台也需要开启来规避这个问题,如果后台不开启,那么访问前台的页面后,在访问后台就会出现这个问题

因此,当你的权限设置后,刷新缓存,post请求出现这个错误,则看一下是不是这个问题导致的

共收到 4 条回复
Fecshop#15个月前 0 个赞

如果是这个问题导致的,按照上面说的设置一下,然后浏览器清空一下cookie,然后重新登陆

xuhuaiqu#24个月前 0 个赞

升级6.1.0版本后,出现这个问题比较多。 注意ajax请求,新版本是需要带着_csrf的参数的。 配置的error_handle默认报错提示信息为404,这个是个升级后未处理新版本错误提示造成的bug。 需要追进Yii中yii\web\Controller beforeAction 这里可以打印处真正的错误。

  if ($this->enableCsrfValidation && Yii::$app->getErrorHandler()->exception === null && !Yii::$app->getRequest()->validateCsrfToken()) {
                throw new BadRequestHttpException(Yii::t('yii', 'Unable to verify your data submission.'));
            }
Fecshop#34个月前 0 个赞

@xuhuaiqu #2楼 如果是ajax post请求,可以添加csrf(参考fecshop的实现),也可以直接在controller中关掉csrf(如果不考虑csrf安全因素)

为了安全问题,加入csrf,在二开的过程中也会麻烦一点

总之,最近加入的后台权限和csrf安全机制,都会让二开麻烦一点,但是是必要的

Fecshop#44个月前 0 个赞

controller去掉某个action的csrf验证: http://www.fecshop.com/topic/1626

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics