URL 链接中 井号#、问号?、连接符& 分别有什么作用?

#,井号:表示网页中的一个位置,被称之为锚点,常用于某个网页间不同位置的跳转,简单的说就是在一个网页中,URL 不变的情况下,通过添加“#buy”的字符在 URL 最后可以跳转到当前网页中已经定义好的锚点(id=”buy”)位置;同样#的改变也会增加浏览器的历史记录,也就是说我们可以通过“后退”按钮回到上一个位置,而熟悉网页开发的朋友们可能也会用于 ajax 的一些操作中,以此来实现不同的访问状态和改变页面访问内容,从而也可以实现那种无刷新载入的效果。

例如:https://zhan.leiue.com/fanly-mip.html#buy (访问该链接就可以直接跳转到 Fanly MIP 主题页面的购买位置哦)

?,问号:常用于动态网站,实现不同的参数值而生成不同的页面或者返回不同的结果,例如 WordPress 的动态链接就是/?p=ID,其中的 p 就表示 post 文章,ID 就表示文章的 ID,从而可以通过文章的 ID 来访问不同的文章。当然我们还常用的就是通过问号+任意参数来实现页面的刷新,从而获得最新的页面或者缓存的刷新。

例如:https://i.leiue.com/avatar/?size=100 (访问该链接就可以获得泪雪用户中心默认的用户头像,并且其 size 就是图像像素大小,所以就会是一个 100px 的头像显示)

&,连接符:既然被叫做是链接符号,那就是连接的作用,也可以说是不同参数的间隔符,一般与问号结合使用,一个动态 URL 链接中以问号开始第一个参数,同&连接符来串联多个参数和值。

例如:https://i.leiue.com/avatar/?size=100&time=20171120 (还是以泪雪个人中心的头像举例,因为头像是有缓存功能的,如果用户修改了头像后,访问原来的地址可能就会存在头像未修改的情况,那么我们在保证要获得 100px 大小的头像并且要刷新缓存就可以使用连接符&多添加一个任意的参数,以此来获取最新的头像)

简单总结:本来子凡是想分享一下“URL 链接中 井号#、问号?、连接符& 与 SEO 有什么关系”这么一个话题,但是发现泪雪博客之前好像没有具体的介绍过这三个在 URL 中常见的符号的作用,所以为了让大家知其然并知其所以然,子凡就只好分开来写这两篇文章啦!

URL中“#” “?” &“”号的作用

1. #

10年9月,twitter改版。一个显著变化,就是URL加入了”#!”符号。比如,改版前的用户主页网址为http://twitter.com/username改版后,就变成了http://twitter.com/#!/username
这是主流网站第一次将”#”大规模用于重要URL中。这表明井号(Hash)的作用正在被重新认识。本文根据HttpWatch的文章,整理与井号有关的所有重要知识点。
一、#的涵义
#代表网页中的一个位置。其右面的字符,就是该位置的标识符。比如,http://www.example.com/index.html#print就代表网页index.html的print位置。浏览器读取这个URL后,会自动将print位置滚动至可视区域。
为网页位置指定标识符,有两个方法。一是使用锚点,比如<a name=”print”></a>,二是使用id属性,比如<div id=”print”>。

二、HTTP请求不包括#
#是用来指导浏览器动作的,对服务器端完全无用。所以,HTTP请求中不包括#。
比如,访问下面的网址,http://www.example.com/index.html#print,浏览器实际发出的请求是这样的:

GET /index.html HTTP/1.1
Host: www.example.com

 

三、#后的字符
在第一个#后面出现的任何字符,都会被浏览器解读为位置标识符。这意味着,这些字符都不会被发送到服务器端。
比如,下面URL的原意是指定一个颜色值:http://www.example.com/?color=#fff,但是,浏览器实际发出的请求是:

GET /?color= HTTP/1.1
Host: www.example.com

 

四、改变#不触发网页重载
单单改变#后的部分,浏览器只会滚动到相应位置,不会重新加载网页。
比如,从http://www.example.com/index.html#location1改成http://www.example.com/index.html#location2,浏览器不会重新向服务器请求index.html。

 

五、改变#会改变浏览器的访问历史
每一次改变#后的部分,都会在浏览器的访问历史中增加一个记录,使用”后退”按钮,就可以回到上一个位置。这对于ajax应用程序特别有用,可以用不同的#值,表示不同的访问状态,然后向用户给出可以访问某个状态的链接。值得注意的是,上述规则对IE 6和IE 7不成立,它们不会因为#的改变而增加历史记录。
六、window.location.hash读取#值
window.location.hash这个属性可读可写。读取时,可以用来判断网页状态是否改变;写入时,则会在不重载网页的前提下,创造一条访问历史记录。
七、onhashchange事件
这是一个HTML 5新增的事件,当#值发生变化时,就会触发这个事件。IE8+、Firefox 3.6+、Chrome 5+、Safari 4.0+支持该事件。
它的使用方法有三种:

  • window.onhashchange = func;
  • <body onhashchange=”func();”>
  • window.addEventListener(“hashchange”, func, false);

对于不支持onhashchange的浏览器,可以用setInterval监控location.hash的变化。

八、Google抓取#的机制
默认情况下,Google的网络蜘蛛忽视URL的#部分。
但是,Google还规定,如果你希望Ajax生成的内容被浏览引擎读取,那么URL中可以使用”#!”,Google会自动将其后面的内容转成查询字符串_escaped_fragment_的值。
比如,Google发现新版twitter的URL:http://twitter.com/#!/username
就会自动抓取另一个URL:http://twitter.com/?_escaped_fragment_=/username
通过这种机制,Google就可以索引动态的Ajax内容。

AJAX = 异步 JavaScriptXML标准通用标记语言的子集)。AJAX 是一种用于创建快速动态网页的技术。

2. ?

1)连接作用:比如

http://www.xxx.com/Show.asp?id=77&nameid=2905210001&page=1

2)清除缓存:比如

http://www.xxxxx.com/index.html 
http://www.xxxxx.com/index.html?test123123

两个url打开的页面一样,但是后面这个有问号,说明不调用缓存的内容,而认为是一个新地址,重新读取。

3. &

不同参数的间隔符

Linux -apache – htpasswd命令详解

创建用户:

svn@git:~/gerrit$ htpasswd -b passwords test922 123456
Adding password for user test922

删除用户:

svn@git:~/gerrit$ htpasswd -D passwords test922
Deleting password for user test922

 

 

 

 

今天先 分享apache htpasswd命令如何使用,即apache htpasswd命令用法介绍。
1、在apache安装目录bin下找到htpasswd.exe

2、在命令行方式下输入htpasswd -help命令,显示apache htpasswd命令帮助信息,注意需要在htpasswd.exe的当前目录下,即Apache\bin目录下使用htpasswd命令

apache htpasswd命令用法及选项说明

apache htpasswd help帮助命令说明

apache htpasswd命令用法

htpasswd [-cmdpsD] passwordfile username

htpasswd -b[cmdpsD] passwordfile username password

htpasswd -n[mdps] username

htpasswd -nb[mdps] username password

apache htpasswd命令选项参数说明

-c  创建一个加密文件

-n  不更新加密文件,只将apache htpasswd命令加密后的用户名密码显示在屏幕上

-m  默认apache htpassswd命令采用MD5算法对密码进行加密

-d  apache htpassswd命令采用CRYPT算法对密码进行加密

-p  apache htpassswd命令不对密码进行进行加密,即明文密码

-s  apache htpassswd命令采用SHA算法对密码进行加密

-b  在apache htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码

-D  删除指定的用户

在Windows, NetWare and TPF 系统中 ‘-m’选项是默认的,在使用apache htpasswd命令时可以忽略。在其他系统中,’-p’选项可能不能工作。

apache htpasswd命令用法实例

1、如何利用htpasswd命令添加用户?

htpasswd -bc .passwd www.leapsoul.cn php

在bin目录下生成一个.passwd文件,用户名www.leapsoul.cn,密码:php,默认采用MD5加密方式

2、如何在原有密码文件中增加下一个用户?

htpasswd -b .passwd leapsoul phpdev

去掉c选项,即可在第一个用户之后添加第二个用户,依此类推

3、如何不更新密码文件,只显示加密后的用户名和密码?

htpasswd -nb leapsoul phpdev

不更新.passwd文件,只在屏幕上输出用户名和经过加密后的密码

4、如何利用htpasswd命令删除用户名和密码?

htpasswd -D .passwd leapsoul

5、如何利用htpasswd命令修改密码?

htpasswd -D .passwd leapsoul

htpasswd -b .passwd leapsoul phpdev

即先使用htpasswd删除命令删除指定用户,再利用htpasswd添加用户命令创建用户即可实现修改密码的功能。

至此,apache htpasswd命令的具体介绍和使用方法就介绍完了。

转自: http://361324767.blog.163.com/blog/static/1149025252012727109254/

———————

本文来自 ljchlx 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/ljchlx/article/details/22039965?utm_source=copy

X-Frame-Options防止网页放在iframe中

原文链接:http://caibaojian.com/x-frame-options.html

在自己新做的一个网站“开发头条”上发现用iframe嵌入github的内容时,一篇空白,什么东西都没有。打开chrome 调试,发现里面输出一个错误提示:Refused to display ‘https://github.com/hwclass/awesome-sound’ in a frame because it set ‘X-Frame-Options’ to ‘deny’. 搜索了一下这个东西。·

X-Frame-Options是什么?

X-Frame-Options是一个HTTP标头(header),用来告诉浏览器这个网页是否可以放在iFrame内。例如:

X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
X-Frame-Options: ALLOW-FROM http://caibaojian.com/

第一个例子告诉浏览器不要(DENY)把这个网页放在iFrame内,通常的目的就是要帮助用户对抗点击劫持。

第二个例子告诉浏览器只有当架设iFrame的网站与发出X-Frame-Options的网站相同,才能显示发出X-Frame-Options网页的内容。

第三个例子告诉浏览器这个网页只能放在http://caibaojian.com//网页架设的iFrame内。

不指定X-Frame-Options的网页等同表示它可以放在任何iFrame内。

X-Frame-Options可以保障你的网页不会被放在恶意网站设定的iFrame内,令用户成为点击劫持的受害人。

另外查了最新的资料,还可以直接通过meta标签来设置,不需要放在http头部请求中了。

<meta http-equiv="X-Frame-Options" content="deny">

两个参数:(作用与上面一致)

  1. SAMEORIGIN
  2. DENY

来源:前端开发博客

关于HTTP头部信息X-Frame-Options的问题-防止网站被人嵌套

有时候为了防止网页被别人的网站iFrame,我们可以通过在服务器设置HTTP头部中的X-Frame-Options信息
使用 X-Frame-Options 有三个可选的值:

DENY:浏览器拒绝当前页面加载任何Frame页面

SAMEORIGIN:frame页面的地址只能为同源域名下的页面

ALLOW-FROM:origin为允许frame加载的页面地址

说到这里肯定会问我设置方法,请往下看:

Apache配置
在你配置站点的地方添加一行:
Header always append X-Frame-Options SAMEORIGIN

nginx配置:

add_header X-Frame-Options SAMEORIGIN;

示例:

server {
listen 443;
server_name laod.zhizhangyi.com;
ssl on;
ssl_certificate /usr/local/nginx/ssl_zhizhangyi/server.crt;
ssl_certificate_key /usr/local/nginx/ssl_zhizhangyi/server.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256;
ssl_prefer_server_ciphers on;
ssl_ecdh_curve secp384r1;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security “max-age=63072000; includeSubDomains; preload”;
# add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection “1; mode=block”;
location / {
proxy_pass http://192.168.1.24/;
}
access_log /home/wwwlogs/24-443.zhizhangyi.com.access.log;
error_log /home/wwwlogs/24-443.zhizhangyi.com.error_log;
}

 

 

HAProxy配置

      rspadd X-Frame-Options:\ SAMEORIGIN
 

PHP和JSP等动态文件更方便
改一下头信息

     PHP代码: header(‘X-Frame-Options:SAMEORIGIN’);
   JSP代码: response.setHeader(“X-Frame-Options”,”SAMEORIGIN”);

 

 

Apache、PHP 隐藏版本信息

http://yfyfj.blog.163.com/blog/static/1542478420111122914470/

一、apache

apache 的httpd.conf 有两个配置可以控制是否显示服务器信息给用户。

对于XAMPP,这两者的配置在conf\extra\httpd-default.conf中。

ServerTokens

ServerSignature

默认条件下会把apache版本系统模块都显示出来(HTTP 返回头)

设置为:

ServerTokens Prod

ServerSignature Off

就隐藏Apache的Apache Version信息。

还有如果列举目录的话会显示域名信息(文件列表正文)
如果不想要就可以调这两个参数
ServerTokens
ServerSignature

ServerSignature On|Off|Email

ServerTokens Minimal|Prod|OS|Full

ServerTokens Prod[uctOnly]
Server sends (e.g.): Server: Apache
ServerTokens Min[imal]
Server sends (e.g.): Server: Apache/1.3.0
ServerTokens OS
Server sends (e.g.): Server: Apache/1.3.0 (Unix)
ServerTokens Full (or not specified)

ServerSignature
控制由系统生成的页面(错误信息,mod_proxy ftp directory listing等等)的页脚中如何显示信息。

可在全局设置文件中控制,或是通过.htaccess文件控制
默认为”off”(ServerSignature Off),有些Linux发行版本可能会打开这个阀门,比如Debian在默认的虚拟主机上默认将这个阀门设置为开放
全局阀门的阀值会被虚拟主机或目录单位的配置文件中的阀值所覆盖,所以,必须确保这样的事情不应该发生
可用的阀值为下面所示:
Off (default): 不输出任何页脚信息 (如同Apache1.2以及更旧版本,用于迷惑)
On:输出一行关于版本号以及处于运行中的虚拟主机的ServerName (2.0.44之后的版本,由ServerTokens负责是否输出版本号)
EMail: 创建一个发送给ServerAdmin的”mailto”

二、隐藏PHP 版本

php.ini

expose_php On
改成
expose_php Off

重启apache后,php版本在http头中隐藏了。