报403错误的解决办法

调用外部接口,报403错误

在 项目FreeMusic (一个音乐网站,喜欢的可以看下谢谢)中调用酷狗 MP4 资源的时候,无法播放,报403错误。然而直接在浏览器地址栏回车则可以正常播放。

报403错误则是访问被拒绝,既然我做了跨域处理还被拒绝这里就要提及浏览器的防盗链机制。

防盗链机制

当你的项目和需要访问的地址不在同一个域内,这时浏览器的防盗链机制就发挥作用了。其中防盗链是利用 HTTP header 中的 referer 来实现的。当浏览器向服务器发送请求时会带上 referer ,来告诉服务器从哪个页面链接过来的。

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

请求发送成功的请求头:

请求未发送成功的请求头:(会有Referer字段)

解决方法

这里我采用的是比较暴力的方法,直接在标签里加 meta

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

在某些情况网站想要控制页面发送给服务器的 referer 信息时,可以使用 referer metadata 参数。

referer 的 metadata 属性可以设置 content 属性值为以下:

  • default
  • never
  • always
  • origin

default :若当前页面使用的是 https 协议,而正要加载资源使用的是普通的 http 协议,则将 http header 中的 referer 置空;

never :删除 http header 中的 referer,所有从当前页面发起的请求将不会携带 referer;

always :不改变 http header 中的 referer 的值;

origin :只发送 origin 部分;

原文:https://hrealm.github.io/posts/a2ab.html

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值