【问题标题】:Controller action called twice控制器动作调用了两次
【发布时间】:2013-02-07 07:50:42
【问题描述】:

我正在使用 Laravel 开发一个网络应用程序,我遇到了这种“奇怪”的行为。一些控制器动作被调用两次。我知道是因为在我的日志中我看到(对于一页刷新)两套完整的条目。我的控制器操作是这样开始的:

public function action_edit($rid=-1) {
    // Calc Input
    $id  = Input::get('id', $rid);
    Log::TWICE("?? {$id} - {$rid}");

其中 $rid 是根据 url 请求编辑的对象 id,但是如果我在输入中得到一个 id,那么我会使用这个 id。所以当我通过如下网址调用我的控制器时:

.../mycontroller/edit/1

我的日志文件中有两个条目:

2013-02-07 00:49:15 TWICE - ?? 1 - 1
2013-02-07 00:49:16 TWICE - ?? img - img

第一个是正常的,我应该看到,但是第二个我不明白它来自哪里。我使用 Chrome 的开发人员工具(网络选项卡和控制台选项卡)进行了检查,但没有第二个请求的迹象!!我最初认为我可能会尝试使用一些具有 img 或 ../img 相对 URL 的资源,但我没有发现任何线索。当然,img 是我的模板上的图像文件夹的名称,但在我的代码中没有一个相对 url img 本身...

您对这个问题有什么建议吗?我应该检查/检查我的代码中的其他什么地方?还有什么可以触发第二次通话?

注意:我在代码的某个时刻使用了以下调用,但引用的操作是“显示”而不是“编辑”!!

Laravel\Routing\Controller::call($controller.'@show', ...

提前谢谢你!

平移


【问题讨论】:

标签: php laravel


【解决方案1】:

这可能是浏览器尝试请求Favicon。

尝试使用 curl,您很可能看不到请求。

【讨论】:

  • 嗨!感谢您的回复,您的建议似乎是正确的,但为什么这只发生在某些操作而不是所有操作?无论如何都要求使用网站图标!不是吗?
  • 好的,现在我完全明白发生了什么。无论如何都请求了 favico,但是当操作没有参数时,操作名称将替换为 img,而当有参数时,操作第一个参数将替换为 img
【解决方案2】:

我遇到了类似的问题,原因是我们落后的趋势科技防火墙。

数据中心正在抓取每个提交的 URL,导致它被命中两次。

这篇文章有更多信息

http://community.trendmicro.com/t5/Worry-Free-Business-Security/WFBS-Trend-Micro-sending-our-data-from-an-IP-in-Tokyo/td-p/15600

我与我们的网络管理员交谈过,他说他将从 TrendMicros 链接站点检查中排除该站点

【讨论】:

    【解决方案3】:

    这是一个老问题,但我在搜索解决方案时仍然在谷歌结果的顶部看到这个,所以我决定在终于找到问题后添加这个答案。

    当前标记为正确的答案只是部分正确:它与图像有关,但不限于 Favicon。

    不知何故,所有主要浏览器(至少对于 IE、Firefox 和 Chrome)都决定当有一个空链接提供到应该是图像的任何地方时,它们会将其设为当前 URL。一些可能导致问题的地方示例:

    <img src="">
    <div class="background-image:url()"></div>
    <link rel="icon" type="image/x-icon" href="">
    

    提供一个链接或简单地删除该行将解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      • 1970-01-01
      相关资源
      最近更新 更多