如何解决Vue无法显示网络图片的问题

缘由

因为项目需求,项目中引用了图片的网络链接,但是发现了很奇怪的问题,图片链接如果在浏览器的地址栏中可以直接打开,如果在前端项目的Img标签中却无法被渲染。

如何解决

在vue项目中的头部添加meta标签

在index.html中添加:<meta name="referrer" content="no-referrer">
或者在img标签中添加:<img referrerpolicy="no-referrer" src="xx"/>

Referrer是什么

  • Referer是http请求header的一部分,当浏览器向Web服务器发送请求的时候,请求头信息一般包含referer。该属性的作用就是告诉服务器这个链接是从哪个页面链接过来的,服务器就可以基于此信息进行处理。

Referre作用

  • 防盗链:顾名思义就是防止别人复制链接盗取资源,原理就是,服务器再接受访问静态资源的请求时,会判断Referer值是否是自己的网站地址。
  • 防止恶意请求:比如静态请求是.html结尾的,动态请求是.shtml,那么所有的*.shtml请求,必须 Referer为我自己的网站才可以访问,这就是Referer的作用。

防盗链的两种方式

  • 允许空Referrer:允许Referer为空,意味着你允许比如浏览器直接访问,就是空。
  • 不允许空Referer:意味着,发送请求必须携带referrer属性。

最后

所以,只要能在浏览器中打开的网络链接图片,其网站设置的防盗链就是允许为空的Referrer。
建议使用这种方式渲染网络图片,如果是在vue项目中的meta属性中,添加可能会影响项目的其他请求。

当你在Vue项目中尝试加载图片时遇到302状态码,通常意味着请求的资源(图片)被服务器重定向到了一个新的URL。这可能是由于以下原因: 1. **临时重定向**:服务器可能正在进行临时的URL迁移或更新,导致旧的URL返回302状态。你可以检查服务器日志或联系网站管理员确认是否是这种情况。 2. **跨域问题**:如果图片链接的域名与当前Vue应用的域名不同,且没有正确的CORS设置,浏览器可能会发送一个302来请求服务器的跨域响应。 3. **图片URL错误**:确保图片URL是正确的,不包含拼写错误、路径缺失等问题。有时候,即使URL本身是正确的,也可能是URL配置文件中引用的问题。 4. **代理设置**:如果你使用了Vue的`axios`等库进行网络请求,并且设置了代理,确保代理配置能正确处理图片请求。 5. **Vue路由刷新问题**:如果图片是在组件内部动态加载的,并且页面刷新时未正确处理,也可能导致302。确保在`created`、`mounted`生命周期钩子中正确处理图片加载。 为了解决这个问题,你可以尝试以下步骤: - 检查服务器端日志和响应头信息,找出重定向的具体原因。 - 如果是跨域问题,考虑配置CORS或使用JSONP等解决方式。 - 更新图片URL,如果是临时性的,等待服务器稳定后。 - 检查Vue的配置,特别是关于网络请求的代理设置。 - 使用Vue的`catch`块捕获并处理可能出现的错误。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值