Day 1 Header & Referrer Policy & 常见的错误代码和错因

常用header汇总:

header(‘Content-Type: text/html; charset=utf-8’); //网页编码(设置页面内容是 html, 编码格式是 utf-8)

header(‘Content-Type: text/plain’); //纯文本格式

header(‘Content-Type: image/jpeg’); //JPG、JPEG

header(‘Content-Type: application/zip’); // ZIP文件

header(‘Content-Type: application/pdf’); // PDF文件

header(‘Content-Type: audio/mpeg’); // 音频文件

header(‘Content-type: text/css’); //css文件

header(‘Content-type: text/javascript’); //js文件

header(‘Content-type: application/json’); //json

header(‘Content-type: application/pdf’); //pdf

header(‘Content-type: text/xml’); //xml

header(‘Content-Type: application/x-shockw**e-flash’); //Flash动画

Referrer Policy 介绍(具体看原文链接)

发布于 署名 4.0 国际 (CC BY 4.0) 原文链接:https://caixw.io/posts/2017/referrer-policy.html

当用户在浏览器上点击一个链接时,会产生一个 HTTP 请求,用于获取新的页面内容,而在该请求的报头中,会包含一个 Referrer,用以指定该请求是从哪个页面跳转页来的,常被用于分析用户来源等信息。但是也有成为用户的一个不安全因素,比如有些网站直接将 sessionid 或是 token 放在地址栏里传递的,会原样不动地当作 Referrer 报头的内容传递给第三方网站。

所以就有了 Referrer Policy,用于过滤 Referrer 报头内容,目前是一个候选标准,不过已经有部分浏览器支持该标准。具体的可查看这里。

指令值
目前包含了以下几种指令值:

复制代码
enum ReferrerPolicy {
“”,
“no-referrer”,
“no-referrer-when-downgrade”,
“same-origin”,
“origin”,
“strict-origin”,
“origin-when-cross-origin”,
“strict-origin-when-cross-origin”,
“unsafe-url”
};
复制代码

空字符串

按照浏览器的默认值执行。默认值为 no-referrer-when-downgrade。部分标签可重定义此安全策略。

no-referrer

从字面意思就可以理解,不传递 Referrer 报头的值。

no-referrer-when-downgrade

当发生降级(比如从 https:// 跳转到 http:// )时,不传递 Referrer 报头。但是反过来的话不受影响。通常也会当作浏览器的默认安全策略。

原地址 跳转地址 Referrer
https://example.com?token=123 https://example.com/path https://example.com?token=123
http://example.com?token=123 http://example.com/path http://example.com?token=123
https//example.com http://example.com/path 无(协议降级)
http://example.com?token=123 https://example.com/path http://example.com?token=123
same-origin

同源,即当协议、域名和端口(如果有一方指定的话)都相同,才会传递 Referrer。

原地址 跳转地址 Referrer
https://example.com?token=123 https://example.com/path https://example.com?token=123
http://example.com?token=123 http://example.com/path http://example.com?token=123
https//example.com http://example.com/path 无(协议不同)
http://example.com?token=123 https://example.com/path 无(协议不同)
http://example.com?token=123 http://example.com:88/path 无(端口不同)
https://example.com?token=123 https://caixw.io 无(域名不同)
origin

将当前页面过滤掉参数及路径部分,仅将协议、域名和端口(如果有的话)当作 Referrer。

原地址 跳转地址 Referrer
https://example.com?token=123 https://example.com/path https://example.com
http://example.com?token=123 https://example.com/path http://example.com
https://example.com?token=123 https://caixw.io https://example.com
strict-origin

类似于 origin,但是不能降级。

原地址 跳转地址 Referrer
https://example.com?token=123 https://example.com/path https://example.com
http://example.com?token=123 https://example.com/path http://example.com
http://example.com?token=123 http://caixw.io http://example.com
https://example.com?token=123 http://caixw.io 无
origin-when-cross-origin

跨域时(协议、域名和端口只有一个不同)和 origin 模式相同,否则 Referrer 还是传递当前页的全路径。

原地址 跳转地址 Referrer
https://example.com?token=123 https://example.com/path https://example.com?token=123
http://example.com?token=123 https://example.com/path http://example.com?token=123
http://example.com?token=123 http://caixw.io http://example.com
strict-origin-when-cross-origin

与 origin-when-cross-origin 类似,但不能降级。

原地址 跳转地址 Referrer
https://example.com?token=123 https://example.com/path https://example.com?token=123
https://example.com?token=123 https://caixw.io https://example.com
https://example.com?token=123 http://example.com/path 无
https://example.com?token=123 http://example.com/ 无
unsafe-url

任意情况下,都发送当前页的全部地址到 Referrer,最宽松和不安全的策略。

传递方式
Referrer-Policy 报头

推荐的方式,直接在 Referrer-Policy 报头中设置。

Referrer-Policy: origin;
Meta

通过指定 name 值为 referrer 的 meta 标签,也可以达到相同的效果:

content 可以是上面的指定的值,也可以是下面这几种旧的指令值,会自动作相应的转换,但不推荐这些旧的指令值:

Legacy Referrer
never no-referrer
default no-referrer-when-downgrade
always unsafe-url
origin-when-crossorigin origin-when-cross-origin
标签属性

a 和 link 标签可以通过属性 rel 指定 noreferrer,仅对当前链接有效;
a、area、link、iframe 和 img 还可以通过 referrerpolicy 指定仅针对当前链接的设置。

常见的错误代码及错误原因
常见的http请求错误代码原因及解决方法
HTTP 错误 400
400 请求出错 由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。

HTTP 错误 401
401.1 未授权:登录失败
此错误表明传输给服务器的证书与登录服务器所需的证书不匹配。
请与 Web 服务器的管理员联系,以确认您是否具有访问所请求资源的权限。 401.2 未授权:服务器的配置导致登录失败
此错误表明传输给服务器的证书与登录服务器所需的证书不匹配。此错误通常由未发送正确的 WWW 验证表头字段所致。
请与 Web 服务器的管理员联系,以确认您是否具有访问所请求资源的权限。 401.3 未授权:由于资源中的 ACL 而未授权
此错误表明客户所传输的证书没有对服务器中特定资源的访问权限。此资源可能是客户机中的地址行所列出的网页或文件,也可能是处理客户机中的地址行所列出的文件所需服务器上的其他文件。
请记录试图访问的完整地址,并与 Web 服务器的管理员联系以确认您是否具有访问所请求资源的权限。
401.4 未授权:授权服务被筛选程序拒绝
此错误表明 Web 服务器已经安装了筛选程序,用以验证连接到服务器的用户。此筛选程序拒绝连接到此服务器的真品证书的访问。 请记录试图访问的完整地址,并与 Web 服务器的管理员联系以确认您是否具有访问所请求资源的权限。
401.5 未授权:ISAPI/CGI 应用程序的授权失败
此错误表明试图使用的 Web服务器中的地址已经安装了 ISAPI 或 CGI程序,在继续之前用以验证用户的证书。此程序拒绝用来连接到服务器的真品证书的访问。
请记录试图访问的完整地址,并与 Web服务器的管理员联系以确认您是否具有访问所请求资源的权限

HTTP 错误 403
403.1 禁止:禁止执行访问
如果从并不允许执行程序的目录中执行 CGI、ISAPI或其他执行程序就可能引起此错误。
403.2 禁止:禁止读取访问
如果没有可用的默认网页或未启用此目录的目录浏览,或者试图显示驻留在只标记为执行或脚本权限的目录中的HTML 页时就会导致此错误。
403.3 禁止:禁止写访问
如果试图上载或修改不允许写访问的目录中的文件,就会导致此问题。
403.4 禁止:需要 SSL
此错误表明试图访问的网页受安全套接字层(SSL)的保护。要查看,必须在试图访问的地址前输入https:// 以启用 SSL。
403.5 禁止:需要 SSL 128
此错误消息表明您试图访问的资源受 128位的安全套接字层(SSL)保护。要查看此资源,需要有支持此SSL 层的浏览器。
请确认浏览器是否支持 128 位 SSL安全性。如果支持,就与 Web服务器的管理员联系,并报告问题。
403.6 禁止:拒绝 IP 地址
如果服务器含有不允许访问此站点的 IP地址列表,并且您正使用的 IP地址在此列表中,就会导致此问题。
403.7 禁止:需要用户证书
当试图访问的资源要求浏览器具有服务器可识别的用户安全套接字层(SSL)证书时就会导致此问题。可用来验证您是否为此资源的合法用户。
请与 Web服务器的管理员联系以获取有效的用户证书。
403.8 禁止:禁止站点访问
如果 Web服务器不为请求提供服务,或您没有连接到此站点的权限时,就会导致此问题。
403.9 禁止访问:所连接的用户太多
如果 Web太忙并且由于流量过大而无法处理您的请求时就会导致此问题。请稍后再次连接。
403.10 禁止访问:配置无效
此时 Web 服务器的配置存在问题。
403.11 禁止访问:密码已更改
在身份验证的过程中如果用户输入错误的密码,就会导致此错误。请刷新网页并重试。
403.12 禁止访问:映射程序拒绝访问
拒绝用户证书试图访问此 Web 站点。 请与站点管理员联系以建立用户证书权限。如果必要,也可以更改用户证书并重试。
HTTP 错误 404
404 找不到 Web 服务器找不到您所请求的文件或脚本。请检查URL 以确保路径正确。

HTTP 错误 405

405 不允许此方法 对于请求所标识的资源,不允许使用请求行中所指定的方法。请确保为所请求的资源设置了正确的 MIME 类型。

HTTP 错误 406

406 不可接受 根据此请求中所发送的“接受”标题,此请求所标识的资源只能生成内容特征为“不可接受”的响应实体。

HTTP 错误 407
407 需要代理身份验证 在可为此请求提供服务之前,您必须验证此代理服务器。请登录到代理服务器,然后重试。

HTTP 错误 412
412 前提条件失败 在服务器上测试前提条件时,部分请求标题字段中所给定的前提条件估计为FALSE。客户机将前提条件放置在当前资源 metainformation(标题字段数据)中,以防止所请求的方法被误用到其他资源。

HTTP 错误 414

414 Request-URI 太长 Request-URL太长,服务器拒绝服务此请求。仅在下列条件下才有可能发生此条件: 客户机错误地将 POST 请求转换为具有较长的查询信息的 GET 请求。 客户机遇到了重定向问题(例如,指向自身的后缀的重定向前缀)。 服务器正遭受试图利用某些服务器(将固定长度的缓冲区用于读取或执行 Request-URI)中的安全性漏洞的客户干扰。

HTTP 错误 500
500 服务器的内部错误 Web 服务器不能执行此请求。请稍后重试此请求。

HTTP 错误 501

501 未实现 Web 服务器不支持实现此请求所需的功能。请检查URL 中的错误

HTTP 错误 502
502 网关出错 当用作网关或代理时,服务器将从试图实现此请求时所访问的upstream 服务器中接收无效的响应。

你可能感兴趣的:(Day 1 Header & Referrer Policy & 常见的错误代码和错因)