控制器动作调用两次

时间:2013-02-07 07:50:42

标签: php laravel

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

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

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

... / myController的/编辑/ 1

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

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

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

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

注意:我在代码的某个时刻使用了以下调用,但引用的操作是'show'而不是'edit'!!

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

提前谢谢!


3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

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

数据中心正在抓取每个提交的网址,导致其被点击两次。

这篇文章有更多信息

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

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

答案 2 :(得分:0)

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

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

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

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

提供链接或只是删除该行就可以解决问题。