控制器操作调用了两次


Controller action called twice

我正在用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。所以当我通过类似的url呼叫我的控制器时

/mycontroller/edit/1

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

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

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

你对这个问题有什么建议吗?我应该在代码中的其他地方进行检查/检查?还有什么可以触发第二次呼叫?

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

Laravel''路由''控制器::调用($Controller.'@show',…

提前谢谢!

平移


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

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

我也遇到过类似的问题,原因是我们落后的Trend Micro防火墙。

数据中心正在对提交的每个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链接网站中排除,检查

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

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

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

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

提供链接或简单地删除线路将解决问题。