【发布时间】:2018-09-01 09:21:56
【问题描述】:
这真的很奇怪。我有以下页面结构:
index.php
<?php
session_start();
include_once('src/functions.php');
logMe('index');
include_once(TEMPLATES_FOLDER . 'standard/header.php');
[...]
include_once(TEMPLATES_FOLDER . 'standard/footer.php');
?>
header.php
<?php logMe('header'); ?>
<!DOCTYPE html>
<html lang="en">
<head>
[...]
<?php if (isset($_SESSION['accountId'])) : ?>
<script type="text/javascript">
[...]
</script>
<?php endif; ?>
</head>
<body>
[...]
我希望得到 2 个日志行,一个来自 index.php,一个来自 header.php(因为 logMe() 函数)。
现在,如果我在 Firefox (61.0.2) 中运行该页面,我会得到 4 个日志。如果我在 Chrome (68.0.3440.106) 中运行它,我会得到 2 个日志。所以在 Firefox 中,它似乎执行了两次。
更奇怪的是,如果我删除 <script> 标签,问题似乎消失了,因为 Firefox 只记录了 2 行。但即使我放回一个空的<script> 标签,它也会记录 4 行!所以问题的关键似乎是这个<script>标签,但怎么可能呢??
此外,我在footer.php 中也有一个<script> 标签。然后我希望在这种行为之后获得 6 个日志行,但我总是只得到 4 个。只有当我同时删除它们(从页眉和页脚)我得到正确的行为(2 个日志)。
有人知道发生了什么吗?
更新
根据raina77ow 的要求,这是access.log 的区别:
- Firefox 记录了 16 行,而 Chrome 记录了 15 行
- Chrome 日志中没有的 Firefox 行:
- 127.0.0.1 - - [01/Sep/2018:11:47:49 +0200] "GET /favicon.ico HTTP/1.1" 404 209
- 127.0.0.1 - - [01/Sep/2018:11:47:49 +0200] “GET /src/lib/toastr/toastr.js.map HTTP/1.1”304 -
- 127.0.0.1 - - [01/Sep/2018:11:47:49 +0200] "GET /?pageId=0 HTTP/1.1" 200 4242 (此行重复两次,一次在开头日志,最后一次)
- 不在 Firefox 日志中的 Chrome 行:
- 127.0.0.1 - - [01/Sep/2018:11:48:40 +0200] "GET /src/lib/toastr/toastr.js.map HTTP/1.1" 200 25633
- 127.0.0.1 - - [01/Sep/2018:11:48:40 +0200] "GET /src/lib/bootstrap-3.3.7/css/bootstrap.min.css.map HTTP/1.1" 200 542194
所以 Firefox 有效地请求 ?pageId=0 两次。
【问题讨论】:
-
您能否检查 Firefox 开发人员工具或服务器日志中的网络面板,以查看请求的具体内容 - 路径等?
-
@raina77ow 在 Chrome 和 Firefox 中我有相同数量的请求:25
-
@raina77ow 我已经添加了 access.log 详细信息
标签: javascript php execution script-tag