首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用javascript src的HTTP_REFERER

问不使用javascript src的HTTP_REFERER
EN

Stack Overflow用户
提问于 2014-06-20 07:57:16
回答 3查看 940关注 0票数 0

场景:我想检测我的访问者来自哪个网站的javacript SRC。

来自google.com的访问者->我的网站(检测访客是否来自谷歌)

代码语言:javascript
复制
<script type="text/javascript" src="ref.php"></script>

refer.php

代码语言:javascript
复制
<?php
if (strstr($_SERVER['HTTP_REFERER'], 'google.com') !== false) {
    header("Location: http://mywebsite.com/organic-traffic.js");
} 
else {
    header("Location: http://mywebsite.com/frequent-visitors.js");
}
?>

上面的PHP代码不工作。但是如果我使用普通的javascript "document.referrer“,它就检测到了。

如果我直接访问文件ref.php,那么也会检测到引用。看起来它把我的网站当作推荐人而不是google.com

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-20 08:32:35

这是一个纯javascript解决方案,正如您所要求的那样。

代码语言:javascript
复制
(document.referrer.match(/^https?:\/\/([^\/]+\.)?google\.com(\/|$)/i))
    ? document.write("\<script src='http://domain/hello-google.js' type='text/javascript'>\<\/script>"); 
    : document.write("\<script src='http://domain/hello-kitty.js' type='text/javascript'>\<\/script>");

第一次更新

好吧,如果您想通过PHP文件或代码片段来完成它,那么您可以这样做

代码语言:javascript
复制
<script type="text/javascript" src="
<?php
if (preg_match('/^https?:\/\/([^\/]+\.)?google\.com(\/|$)/', $_SERVER['HTTP_REFERER'])){
    echo "http://domain/hello-google.js"; 
}else{
    echo "http://domain/hello-kitty.js"; 
}   
?>"></script>

我相信您希望根据引用程序加载不同的.js文件,但不要重定向到.js文件,因为它没有任何意义。

第二次更新

这是另一件愚蠢的事情;不知何故,我相信您只是将我的代码片段放入您的ref.php中,但是它不会那样工作--因为您包含了PHP,所以您的第一行( javascript指令)应该如下所示

代码语言:javascript
复制
<script type="text/javascript" src="<?php include('ref.php'); ?>"></script>
票数 0
EN

Stack Overflow用户

发布于 2014-06-20 10:31:50

问题是脚本的引用者是包含脚本的页面。不是你在进入那一页之前的那一页。

你能做的就是:

代码语言:javascript
复制
<script type="text/javascript" src="ref.php?referer=<?php
    echo urlencode($_SERVER['HTTP_REFERER']);
?>"></script>

然后您可以免费访问$_GET['referer'],而不是在ref.php中访问$_SERVER['HTTP_REFERER'] :)

票数 1
EN

Stack Overflow用户

发布于 2014-06-20 08:06:02

如果您使用mor_rewrite重定向到您的ref.php,则HTTP_REFERER将为空。如果这样做,您可以向.htaccess添加如下代码:

代码语言:javascript
复制
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !www.example.com [NC]
RewriteRule \.php$ - [F,NC]

如果使用ajax,也应该自己发送Referer报头。诸若此类。如果Referer没有退出,那么请不要发送它,您应该自己添加Referer标头

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24322570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档