模仿Gitee实现站外链接跳转时进行确认

概述

如Gitee等网站,在有外部链接的时候如果不是同域则会出现一个确认页面。本文就带你看看这个功能应该如何实现。

效果

image.png

实现

1. 实现思路

将打开链接作为参数传递给一个中间页面,在页面加载的时候判断链接的域名和当前网站是否同域,同域则直接跳转,如果不同域,则展示确认页面进行在此确认。如下为跳转页面。

http://localhost:3001/#/link?target=https://www.baidu.com

2. 实现代码

<template>
    <div class="layout-main">
      <div class="layout-box">
        <p>即将跳转到外部网站</p>
        <p>您将要访问的链接不属于{{ local }},请关注您的账号安全。</p>
        <p>{{ target }}</p>
        <p>
          <el-button type="warning" @click="goto">继续前往</el-button>
        </p>
      </div>
    </div>
  </template>
  
  <script>
  export default {
    computed: {
      isSameDomain() {
        const host = this.local
        const targetHost = new URL(this.target).host
        return host === targetHost
      },
      target() {
        return this.$route.query.target
      },
      local() {
        return window.location.host
      }
    },
    created() {
      if(this.isSameDomain) window.location.href = this.target
    },
    methods: {
      goto() {
        window.location.href = this.target
      }
    }
  }
  </script>
  
  <style lang="scss" scoped>
  $size: 38rem;
  
  .layout-main {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-content: center;
    justify-content: center;
    font-size: 1.2rem;
    background: #efefef;
    padding: 0 calc(50% - $size / 2);
    h3 {
      width: $size;
      text-align: center;
      font-size: 1.8rem;
      margin: 0.5rem 0;
    }
    .layout-box {
      background-color: #ffffff;
      width: $size;
      border-radius: 0.4rem;
      box-shadow: 0.1rem 0.1rem 0.4rem #ccc;
      padding: 1.5rem;
      p {
        margin: 0;
        line-height:2;
        &:first-child {
          font-size: 1.5rem;
          margin-bottom: 1rem;
          line-height: 1;
        }
        &:last-child {
          text-align: right;
        }
      }
    }
  }
  </style>
``


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/434081.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

web学习笔记(二十六)

目录 1.JS执行队列 1.1JS是单线程 1.2Web Worker 1.3同步和异步 1.4JS执行机制 2.location对象 2.1什么是location对象 2.2url包含的信息 2.3location对象属性 2.4location对象的方法 3.navigator对象和history对象 3.1navigator对象 3.2history对象 1.JS执行队…

基于深度学习的苹果叶片病害检测系统(含UI界面、yolov8、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下&#xff1a; 算法模型&#xff1a;     yolov8 yolov8主要包含以下几种创新&#xff1a;         1. 可以任意更换主干结构&#xff0c;支持几百种网络主干。 数据集&#xff1a;     网上下载的数据集&#x…

Jmeter吞吐量控制器使用

场景&#xff1a;在同一个线程组里&#xff0c;有10个并发&#xff0c;7个做A业务&#xff0c;3个做B业务&#xff0c;要模拟这种场景&#xff0c;可以通过吞吐量模拟器来实现。 添加吞吐量控制器 用法1&#xff1a;Percent Executions 在一个线程组内分别建立两个吞吐量控制…

rtt的io设备框架面向对象学习-电阻屏LCD设备

目录 1.8080电阻屏LCD设备1.1 构造流程1.2 使用 2.spi电阻屏LCD3.i2c电阻屏LCD4.总结 电阻屏LCD通信接口有支持I2c、SPI和8080通信接口的&#xff0c;根据通信接口分立章节。 另外&#xff0c;lcd这块不像其他设备类&#xff0c;rtt没有实现lcd设备类的设备驱动框架层&#xf…

我们发布了一款类Wox和Alfred,全新的桌面端效率工具RunFlow,欢迎大家来体验

RunFlow是一款跨平台的生产力工具&#xff0c;可以启动应用程序和搜索文件等&#xff0c;类似于Windows平台的Wox和PowerToys&#xff0c;同样也类似于Mac平台的Alfred和Raycast。但我们并不与这些工具相同&#xff0c;我们有自己独特的新特性。下面&#xff0c;我们将向您详细…

仙宫云:细节控ComfyUI AI写实摄影+视频镜像

在使用comfyui工作流时经常遇到插件安装&#xff0c;模型下载的问题&#xff0c;为了方便大家使用和体验comfyui&#xff0c;我在仙宫云上部署了一个云端comfyui镜像包&#xff0c;开放给大家使用。 细节控ComfyUI AI写实摄影视频工作流&#xff1a; 镜像主页&#xff1a;仙宫…

Stable Diffusion V3测评

1.引言 3月5号&#xff0c;Stability AI发布了介绍Stable Diffusion V3的研究论文&#xff0c;链接地址&#xff1a;戳我 这是目前他们发布的最先进、功能最强大的图像生成器&#xff0c;与一年多前发布的令人印象深刻的 Stable Diffusion V2.1 相比有了大幅升级。SD3所带来的…

机器视觉 /从bottle.hdev示例程序开启HalconHDevelop征程

文章目录 概述示例程序bottle.hdev源码Step 0: PreparationsStep 1: Segmentation - 读取并显示图片Step 1: Segmentation - 创建并设置OCR模型Step 1: Segmentation - 文本分割与识别计算结果显示内存释放 导出为C代码导出为C代码配置 VS Halcon 环境VS程序执行结果HTuple hv…

代码随想录day13(1)栈与队列:用栈实现队列(leetcode232)

题目要求&#xff1a;使用栈实现push、pop、empty、peek&#xff08;返回队列首部元素&#xff09;。 思路&#xff1a;本题思路比较容易&#xff0c;即用两个栈模拟即可&#xff0c;pop时只需要先判断stackout栈是否为空&#xff0c;如果不空直接弹出&#xff0c;如果空就将s…

数据库-ER图教程

一.什么是E-R图 E-R图全称&#xff1a;“Entity-Relationship Approach”&#xff0c;是一种“实体-联系”方法。 E-R图的优点&#xff1a; 1.自然地描述现实世界。 2.图形结构简单。 3.设计者和用户易理解。 4.是数据库设计的中间步骤&#xff0c;易于向数据模型转换。 …

SSM框架,SSM框架的整合

SSM整合的介绍 微观&#xff1a;将Spring SpringMVC Mybatis框架应用到项目中 SpringMVC框架负责控制层Spring 框架负责整体和业务层的声明式事务管理MyBatis框架负责数据库访问层 宏观&#xff1a;Spring接管一切&#xff08;将框架核心组件交给Spring进行IoC管理&#xff09…

贝叶斯:最大似然估计与最大后验估计

最大似然估计 最大后验估计 《神经网络与深度学习》 Neural Networks and Deep Learning 邱锡鹏 P36-37

网康科技 NS-ASG 应用安全网关 SQL注入漏洞复现(CVE-2024-2022)

0x01 产品简介 网康科技的NS-ASG应用安全网关是一款软硬件一体化的产品,集成了SSL和IPSec,旨在保障业务访问的安全性,适配所有移动终端,提供多种链路均衡和选择技术,支持多种认证方式灵活组合,以及内置短信认证、LDAP令牌、USB KEY等多达13种认证方式。 0x02 漏洞概述 …

python+django+vue电影票订购系统dyvv4

电影院订票信息管理系统综合网络空间开发设计要求。目的是将电影院订票通过网络平台将传统管理方式转换为在网上操作&#xff0c;方便快捷、安全性高、交易规范做了保障&#xff0c;目标明确。电影院订票信息管理系统可以将功能划分为用户和管理员功能[10]。 语言&#xff1a;…

云原生基础知识:容器技术的历史

容器化的定义&#xff1a; 容器化是一种轻量级的虚拟化技术&#xff0c;将应用程序及其所有依赖项&#xff08;包括运行时、系统工具、系统库等&#xff09;打包到一个称为容器的单独单元中。容器提供了一种隔离的执行环境&#xff0c;使得应用程序可以在不同的环境中运行&…

list链表的创建,排序,插入, test ok

1. 链表的建立&#xff0c;打印 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stack> #include <iostream> #include <string.h> #include <string>using namespace std;struct node {int data;s…

一体化对账和结算平台的设计与实现

随着企业规模的扩大和业务的复杂化&#xff0c;对账和结算工作变得愈发繁琐和复杂。为了提高工作效率和降低错误率&#xff0c;许多企业开始寻求一体化对账和结算平台的解决方案。本文将探讨一体化对账和结算平台的设计原则和实施步骤&#xff0c;以及其在企业管理中的重要性。…

jdk安装,配置path系统变量

直接点击安装 不要包含空格&#xff0c;中文字符 3.找到刚刚的路径&#xff0c;看一下&#xff0c;有东西就说明安装对了 配置path winr输入sysdm.cpl点击确定 全部依次点击 确定 即可。 验证jdk是否安装成功 看java、javac是否可用看java、javac版本号是否无问题 win…

about batch[0].new(storage)的问题(VOT)

最近在处理VOT数据集时&#xff0c;遇到了一个奇怪的问题&#xff0c;特此记录。 源代码如下&#xff1a; def ltr_collate_stack1(batch):"""Puts each data field into a tensor. The tensors are stacked at dim1 to form the batch"""error…

Java多线程——synchronized、volatile 保障可见性

目录 引出synchronized、volatile 保障可见性Redis冲冲冲——缓存三兄弟&#xff1a;缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 Java多线程——synchronized、volatile 保障可见性 synchronized、volatile 保障可见性 原子性&#xff1a;在一次或者多次操作时…