meta标签http-equiv为last-modified的W3C校验报错解决方法
W3C校验报错原因与修复方案
错误代码
触发校验失败的代码片段:
<meta http-equiv="last-modified" content="Mon, 20 Jun 2022 21:13:42 GMT"/>
对应报错信息:Bad value “last-modified” for attribute “http-equiv” on element “meta”.
违规点说明
HTML5标准对meta标签的http-equiv属性设置了严格的合法枚举值范围,仅标准定义的Pragma指令可作为该属性的取值,last-modified不在合法列表内,因此直接触发校验错误。
这个写法是早期非标准的遗留习惯:Last-Modified本质是HTTP协议层面的响应头字段,设计初衷就是由Web服务器在响应HTML内容时通过HTTP头返回,从来不属于HTML文档内meta标签的支持范畴。即便强行把这段代码写在页面里,所有主流浏览器、搜索引擎爬虫、缓存服务都不会识别这个标签内的时间作为文档实际修改时间,没有实际运行效果。
修复方式
根据实际使用场景二选一即可:
- 若需要向浏览器、爬虫、缓存节点传递文档的官方最后修改时间:直接删除页面内的这段meta标签,在Web服务端配置
Last-ModifiedHTTP响应头即可,原有时间值Mon, 20 Jun 2022 21:13:42 GMT符合HTTP日期格式要求,可以直接沿用。常见服务配置参考:- Nginx:静态资源默认会根据文件系统的最后修改时间自动生成该响应头,无需额外配置;动态内容可添加配置:
add_header Last-Modified "Mon, 20 Jun 2022 21:13:42 GMT"; - Apache:可添加配置:
Header set Last-Modified "Mon, 20 Jun 2022 21:13:42 GMT"
- Nginx:静态资源默认会根据文件系统的最后修改时间自动生成该响应头,无需额外配置;动态内容可添加配置:
- 若仅需要在HTML源码内留存修改时间作为内部备注:将标签的
http-equiv属性替换为name属性即可,自定义meta名称的写法完全符合HTML规范,不会触发W3C校验错误,调整后代码:
<meta name="last-modified" content="Mon, 20 Jun 2022 21:13:42 GMT"/>
注意:这种自定义meta标签仅作为源码内的备注信息存在,不会被客户端识别为官方的最后修改时间标识。
内容的提问来源于stack exchange,提问作者MiscellaneousUser
相关产品推荐
相关产品推荐

