调用外部接口报403错误的最简单解决办法

工控评论

调用外部接口报403错误的最简单解决办法

报403错误的原因
首先,报403错误的原因需要提及浏览器的防盗链机制。

防盗链机制
当你的项目和需要引用的网址不在同一个域内的,那么浏览器的防盗链机制发挥作用。

其中防盗链是利用HTTP header 中的referer来实现的。当浏览器向服务器发送请求时会带上referer,来告诉服务器从哪个页面链接过来的。

服务器端通过referer来判断请求是否是自己的域名,如果不是自己的域名就会拦截,不会将请求发送出去,如果是自己域名那么就继续访问。

请求发送成功的请求头Request Headers:
调用外部接口报403错误的最简单解决办法-图片1丰富自我知识,欢迎光临公式库网!
请求为发送成功的请求头 Request Headers:

调用外部接口报403错误的最简单解决办法-图片2丰富自我知识,欢迎光临公式库网!

方法:在 标签里加 meta

<meta name="referrer" content="never">

这样存在第三方网站上的图片,在你的网站上就可以访问了。

referrer

在某些情况下,出于一些原因,网站想要控制页面发送给 server 的 referrer 信息的情况下,可以使用这一 referer metadata 参数。

参数

referer 的 metedata 属性可设置 content 属性值为以下集合:

  • never
  • always
  • origin

结果

  • 如果 referer-policy 的值为 never:删除 http head 中的 referer;
  • 如果 referer-policy 的值为 default:如果当前页面使用的是 https 协议,而正要加载资源使用的是普通的 http 协议,则将 http header 中额 referer 置为空;
  • 如果 referer-policy 的值 origin:只发送 origin 部分;
  • 如果 referer-policy 的值为 always:不改变 http header 中的 referer 的值;

举例

如果页面中包含了如下 meta 标签,所有从当前页面中发起的请求将不会携带 referer:

<meta name="referrer" content="never">

如果页面中包含了如下 meta 标签,则从当前页面中发起的 http 请求将只携带 origin 部分:

<meta name="referrer" content="origin">

运营不易,
感谢支持!
weinxin
我的微信
我的微信公众号
我的微信公众号扫一扫
weinxin
我的公众号
 最后更新:2020-5-20
公式库网
  • 本文由 公式库网 发表于 2019年7月14日13:20:01
  • 转载请务必保留本文链接:https://www.gongshiku.com/html/201907/diaoyongwaibujiekoubao403cuowudezuijiandanjiejuebanfa.html

发表评论