首页 > 其他分享 >html 中使用 ssi 指令

html 中使用 ssi 指令

时间:2023-04-05 18:23:54浏览次数:29  
标签:00 显示 html SSI 指令 ssi 客户端

SSI 即 Server Side Include,是一种基于服务端的网页制作技术


Apache 开启 SSI 支持

  • 首先开启模块 mod_include

    LoadModule include_module modules/mod_include.so
    
  • httpd.conf 或 主配置中引入的文件中配置 ssi 相关

    Options +Includes
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
    
    • 上面的配置中,告诉 apache 解析所有后缀是 .shtml 的文件

    • 通常静态文件后缀为 html,可以修改配置中的 shtmlhtml,这样会导致 apache 发送文件到客户端前通读文件,即使里面没有 SSI 指令,影响页面加载速度

  • 另一种方法是,使用 XBitHack 指令,用到再来补充


Nginx 开启 SSI 支持

ssi 默认是关闭状态

# 启用 ssi,默认为 off
ssi on;

# on 时,在处理SSI文件出错时输出错误提示
ssi_silent_errors off;

# 默认是text/html,需要支持shtml则需要设置:ssi_types text/shtml
ssi_types text/html;

上面配置可以放在 http、server 或 location 作用域下


SSI 指令

最常见的引入一个共通页面

<!--#include virtual="/common/header.html" -->

<!--与 # 号间无空格

类似于 html 的注释,不会在页面显示。正确解析后会被解析后的内容替代


include

文件中包含另一个程序,被包含的文件可以是任意扩展名

# 文件名时相对路径,可以在同级或子目录,不能在上级目录
<!--#include file="sub.html" -->

# 虚拟目录,从根目录开始
<!--#include virtual="/cgi-bin/counter.pl" -->

flastmod

文件的修改日期

<!--#flastmod file="index.html" -->

fsize

文件大小

<!--#fsize file="index.html" -->

config

配置

# 设置时间格式
<!--#config timefmt="%A %B %d, %Y" -->

# 设置 SSI 指令发生错误时的提示信息
<!--#config errmsg="[It appears that you don't know how to use SSI]" -->

# 设置返回文件大小的格式(bytes、Kb、Mb)
<!--#config sizefmt="Kb" -->

echo

显示一个变量的值,可以是标准变量,也可以是 set 自定义的变量

# 显示当前日期
<!--#echo var="DATE_LOCAL" -->

# 文件修改时间
<!--#echo var="LAST_MODIFIED" -->

exec

用 shell(/bin/sh 或 DOS shell)来执行命令

也可以执行 cgi 脚本

# linux 中
<!--#exec cmd="ls" -->

# 执行 cgi 程序
<!--#exec cgi="/cgi-bin/command.cgi" -->

# windows 中
<!--#exec cmd="dir" -->

为了防止 SSI 注入,apache 中配置中可加入 Options IncludesNOEXEC 进行屏蔽 exec 指令


set

自定义变量

# 字面变量赋值
<!--#set var="env" value="PROD" -->

# 标准变量赋值,前面加 $
<!--#set var="modified" value="$LAST_MODIFIED" -->

# 多个标准变量或和字面变量混合时,用花括号隔开
<!--#set var="date" value="now ${DATE_LOCAL} modified ${LAST_MODIFIED}" -->

# 变量包含特殊字符要转义
<!--#set var="cost" value="\$100" -->

if elif else endif

条件语句,条件中可以用正则

<!--#if expr="1 = 1"-->
显示内容
<!--#elif expr="1 = 2"-->
显示内容
<!--#else-->
显示内容
<!--#endif"-->

SSI 注入漏洞及预防

只要服务器允许 ssi 指令,要严格控制用户输入验证,避免 ssi 注入。



SSI 指令中常见的日期时间格式

%a 一周七天的缩写形式 Thu
%A 一周七天 Thursday
%b 月的缩写形式 Apr
%B 月 April
%d 一个月内的第几天 13
%D mm/dd/yy日期格式 04/13/00
%H 小时(24小时制,从00到23) 01
%I 小时(12小时制,从00到11) 01
%j 一年内的第几天,从01到365 104
%m 一年内的第几个月,从01到12 04
%M 一小时内的第几分钟,从00到59 10
%p AM或PM AM
%r 12小时制的当地时间,格式为 01:10:18 AM
%I:%M:%S AM | PM
%S 一分钟内的第几秒,从00到59 18
%T 24小时制的%H:%M:%S时间格式 01:10:18
%U 一年内的第几个星期,从00到 15   52,以星期天作为每个星期的第一天
%w 一星期内的第一天,从0到6 4
%W 一年内的第几个星期,从00 15   到53,以星期一作为每个星期的第一天
%y 年的缩写形式,从00到99 00
%Y 用四位数字表示一年 2000
%Z 时区名称 MDT 

echo 可显示的环境变量

DOCUMENT_NAME:显示当前文档的名称
DOCUMENT_URI:显示当前文档的虚拟路径
QUERY_STRING_UNESCAPED:显示未经转义处理的由客户端发送的查询字串,其中所有的特殊字符前面都有转义符“\”
QUERY_STRING_UNESCAPED:显示未经转义处理的由客户端发送的查询字串,其中所有的特殊字符前面都有转义符“\”
DATE_GMT:功能与DATE_LOCAL一样,只不过返回的是以格林尼治标准时间为基准的日期
LAST_MODIFIED:显示当前文档的最后更新时间

可显示的 cgi 环境变量

SERVER_SOFTWARE:显示服务器软件的名称和版本
SERVER_NAME: 显示服务器的主机名称,DNS别名或IP地址
SERVER_PROTOCOL:显示客户端请求所使用的协议名称和版本,如HTTP/1.0
SERVER_PORT:显示服务器的响应端口
REQUEST_METHOD:显示客户端的文档请求方法,包括GET, HEAD, 和POST
REMOTE_HOST:显示发出请求信息的客户端主机名称
REMOTE_HOST:显示发出请求信息的客户端主机名称
AUTH_TYPE:显示用户身份的验证方法
REMOTE_USER:显示访问受保护页面的用户所使用的帐号名称

标签:00,显示,html,SSI,指令,ssi,客户端
From: https://www.cnblogs.com/rendd/p/17283894.html

相关文章

  • 第五次html
    菱形:  代码:<!DOCTYPEhtml><htmllang="zh"> <head> <metacharset="UTF-8"> <title>Document</title> </head> <body> <script>{ layer=parseInt(prompt("请输入层数")) ......
  • 第六次html
    运行截图:  代码:<!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <styletype="text/css"> *{ margin:0; padding:0; } .container>img{ position:absolute; ......
  • HTML5地理定位 Geolocation API
    使用getCurrentPosition方法来取得用户当前的地理位置信息,该方法的定义如下所示。voidgetCurrentPosition(onSuccess,onError,options);第一个参数为获取当前地理位置信息成功时所执行的回调函数;第二个参数为获取当前地理位置信息失败时所执行的回调函数;第三个参数为一些可选属......
  • 怎么利用CSS实现HTML5响应式导航栏
    在html5中实现响应式导航栏的方法有很多种,如何利用纯CSS来现实这一功能,在这里小编就通过实例来和大家讲解,纯CSS实现的HTML5响应式导航栏的方法和技巧。目前响应试web页面已经逐渐开始盛行,除了将页面的内容以及布局结构实现响应试以外,剩下的重点就是实现导航栏的响应试,当然方法有很......
  • html5从响应式导航开始
    常用的一个响应式网页导航条解决方案,整理记录。效果展示入口:https://shanhubei.github.io/navigationh5/html结构和js代码都很简单,主要是css样式。直接粘上来的代码有点乱。最下面有demo的下载地址,可以下载看整理过的代码。主要的css知识点有:@mediascreenand(max-width:1279px......
  • Zookeeper Session源码
    我们说客户端与服务端建立连接交互的时候会创建一个Session与之对应,那假设客户端请求来了,服务端是如何处理的?Session又是如何创建出来的?我们先来看第一个问题:服务端如何处理客户端发来的请求?一、如何处理请求所谓的请求全称是网络请求,涉及到网络就少不了Socket通信,ZooKeep......
  • JavaWeb——HTML基本标签详解及案例实战(文件标签、文本标签、图片标签、列表标签、链
    目录1、文件标签2、文本标签3、图片标签4、列表标签5、链接标签6、块标签7、语义化标签8、表格标签9、综合案例上一节介绍了HTML的基本概念,和基本语法,本节介绍下HTML的基本标签和表单标签。这部分学习可以参照W3Cschool,一个很好的网站。1、文件标签文件标签是构成HTML最基本的标签,......
  • Error resolving template [date], template might not exist or might not be access
    这种情况要不就是你想加载页面@RequestMapping("/welcome1.html")publicStringwelcome1(){return"/welcome1";}但写错了改正:@RequestMapping("/welcome1.html")publicStringwelcome1(){return"welcome1";}或者你想return一个值加入注解@R......
  • flask:cbv源码分析、模板语法、请求与响应、session及源码分析、闪现(flash)、请求扩展
    目录一、cbv源码分析1.1基于类的视图写法1.2源码分析1.3分析源码,查找不传别名的时候为什么函数名会变成别名1.4flask的路由注册使用装饰器,如果写了一个登录认证装饰器,那么应该放在路由装饰器上还是下?1.5dispatch_request讲解1.6知识点总结二、模板语法2.1py2.2html三、请......
  • flask框架02 cbv分析 模板 请求与响应 session 闪现 请求拓展
    今日内容详细目录今日内容详细1cbv分析1.1源码分析2模板2.1py文件2.2html页面3请求与响应4session及源码分析4.1session的使用4.2源码分析5闪现6请求拓展1cbv分析#基于类的视图,写法fromflaskimportFlask,requestfromflask.viewsimportView,MethodView......