我正在尝试进行退出页面重定向,主要目的是隐藏确切页面路径的 http 引用数据,
我将此代码用作 exit.php 页面:
<?php
/*
* Sets the HTTP headers to redirect the user to a different page
* along with settings the HTTP status code to 307 Temporary Redirect
*/
function redirect($url) {
header("Location: {$url}", true, 307);
}
/*
* Checks if the URL is valid and uses the HTTP or HTTPS scheme.
*/
function valid_url($url) {
if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED|FILTER_FLAG_HOST_REQUIRED) === false) {
return false;
}
$scheme = parse_url($url, PHP_URL_SCHEME);
if($scheme !== "http" && $scheme !== "https") {
return false;
}
return true;
}
if(!isset($_GET['url'])) {
// Missing required argument. What should we do?
redirect("/");
exit;
}else{
$url = $_GET['url'];
if(valid_url($url)) {
redirect($url);
exit;
}else{
// Invalid URL. What should we do?
redirect("/");
exit;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在页面上我添加这样的链接:
<a href="/exit.php?url=http%3A%2F%2Fexample.com">Example.com</a>
Run Code Online (Sandbox Code Playgroud)
但是当我使用https://www.whatismyreferer.com/测试它时, 我仍然得到了确切的路径,所以我不确定我在这里做错了什么
正如我在评论中所说,您无法从服务器端隐藏 Referrer(据我所知),但有一些方法可以做到这一点。
您可以通过添加 meta 元素来告诉浏览器不要发送引荐来源网址,如下所示:
<meta name="referrer" content="no-referrer">
Run Code Online (Sandbox Code Playgroud)
您可以将该referrerpolicy属性添加到锚点元素(area、img、iframe 和链接),它接受以下值:
no-referrer, no-referrer-when-downgrade, origin, origin-when-cross-origin, unsafe-url
更多详细信息在这里。
你也可以传递noreferrer给rel属性,更多细节在这里
此 HTTP 标头允许您设置有关发送引荐来源网址、文档here 的策略,您可以在 PHP 中使用它的header()功能如下:
header("Referrer-Policy: no-referrer");
或者在你的情况下:
function redirect($url) {
header("Referrer-Policy: no-referrer");
header("Location: {$url}", true, 307);
}
Run Code Online (Sandbox Code Playgroud)
此文章解释了更多的细节此功能。
| 归档时间: |
|
| 查看次数: |
3324 次 |
| 最近记录: |