测试结果:

同一个页面,2次打开,第一次能获取到Referer第二次获取不到,很好奇原因所在。

test1.php代码是:

<?php

echo '测试来源:直接载入页面<br/>';

echo '<a href="test_cookie.php">进入页面</a><br/>';

echo '测试来源:新窗口打开<br/>';

echo '<a target="_blank" href="test_cookie.php">进入页面</a><br/>';

test_cookie.php的代码为:

<?php

date_default_timezone_set('Asia/Shanghai');//设置默认时区
header('content-type:text/html; charset=utf8');//设置返回头信息 echo date('Y-m-d H:i:s');
echo "<br/>\r\n"; echo 'PHP获取Refer是:';
$refer=isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:'No refer found';
echo $refer;
echo "<br/>\r\n"; echo 'JS获取Refer是:';
echo "<script>document.writeln(document.referrer);</script>";
echo "<br/>\r\n";

极度好奇是什么原因造成的第一次能获取,第二次不能获取。

环境是LNMPA,官方是http://lnmp.org/lnmpa.html

Mac下用charles抓包

2次请求test1.php的header是一致的。

2次请求test_cookie.php的header是一致的。

那么问题来了,什么原因造成的2次完全一模一样的请求,PHP取不到refer。跪求解。

更多精彩话题关注小五博客http://www.lingdonge.com

PHP无法获取Referer问题排查的更多相关文章

  1. Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL

    Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL >>>>>>>>>>>>> ...

  2. javaweb之request获取referer请求头实现防盗链

    package test.request; import java.io.IOException; import javax.servlet.ServletException; import java ...

  3. Referrer 还是 Referer?

    上回我写了一篇文章介绍「Referrer Policy」,有小伙伴看完后问我:Referrer 这个单词到底怎么拼,为什么有时候中间有两个 r,有时候只有一个? 是的,这是一个很有趣的问题,这里就给有 ...

  4. referer htttp headers 统计信息 防盗链

    HTTP headers是HTTP请求和相应的核心模块,它承载了关于客户端浏览器.请求页面.服务器等相关信息.Referer是HTTP头中的一个属性,告诉服务器我是从哪个页面链接过来的,所携带的信息用 ...

  5. 防盗链[referer]

    原文出处:http://www.cnblogs.com/devilfree/archive/2012/09/11/2680914.html 总结一下今天学习防盗链Filter的一些知识点: 防盗链要实 ...

  6. 利用referer属性,记录百度搜索跳转参数

    从百度搜索结果跳转到指定链接前,百度会发送一些参数,可以利用referer属性,在本站访问时记录百度跳转来之前的一些参数. 利用百度跳转前参数,进行一些相关的seo优化. 目前所用到的一些参数说明如下 ...

  7. IE bug之location.href没有referer

    使用js实现跳转一般会用 location.href="www.google.com"; 这样在一般的浏览器中可以在服务器端正常的获取referer,但是如果是IE浏览器就不正常了 ...

  8. HTTP系列之Referer和Referrer policy简介

    目录 @ 1.前言摘要 在csdn网站随便抓个链接来看看: Referer参数: referrer policy是unsafe url的,ok,下面介绍一下Referer和referrer polic ...

  9. 利用窗口引用漏洞和XSS漏洞实现浏览器劫持

    ==Ph4nt0m Security Team==                        Issue 0x03, Phile #0x05 of 0x07 |=----------------- ...

随机推荐

  1. C# in Depth阅读笔记3:C#3特性

    1.隐式类型 var a=new Dictionary<string ,list<person>>();可以简化代码,增强可读性. 2.简化初始化 (1)设置简单属性 Pers ...

  2. jQuery load()和ready()

    ready与load谁先执行: 大家在面试的过程中,经常会被问到一个问题:ready与load那一个先执行,那一个后执行?答案是ready先执行,load后执行. DOM文档加载的步骤: 要想理解为什 ...

  3. Winform mschart 动态绑定X时间表

    效果图: 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.D ...

  4. Js 自定义回调函数

    参考 http://mlxnle.iteye.com/blog/1670679 <!doctype html> <html lang="es"> <h ...

  5. ORA-04031: 无法分配 共享内存

    今天现场项目oracle系统定时器插入数据报错: --ORA-04031: 无法分配 3936 字节的共享内存 ("shared pool","truncate tabl ...

  6. C++ 数据结构学习一(顺序表)

    //SequentialList.h 顺序表模板类 #ifndef SEQUENTIAL_LIST_HXX#define SEQUENTIAL_LIST_HXX using std::cout; us ...

  7. MYSQL 数据表备份

    方法: mysqldump -uuser_name -p db_name table_nameList >save_file_path 例子: 备份分studio数据库的student 表 my ...

  8. 转 批处理 %~dp0的意义

    http://nealcai.iteye.com/blog/1685192 http://blog.csdn.net/caz28/article/details/7448677 http://stac ...

  9. 7.使用ProcessBuilder执行本地命令(转)

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.IO ...

  10. gdb的user-define command

    搜索: user-defined例子. # save this file in ~/.gdb or some where easy to find. # then in ~/.gdbinit add ...