详解前端如何突破refer验证

简介: 详解前端如何突破refer验证

重要声明:referer是服务端的一个验证方式,所以要从服务端着手, referer属性是前台接口告诉服务器该接口的域名,而后台可以对应设置请求头referer从而对接口进行限制访问。


那么,什么东西最合适呢?那就是代理服务器了!前端跨域请求利器之一的代理服务器。


我们用一个基础的vue案例,在做服务器代理,并突破referer限制,移动端的小米商城的接口是做了referer验证的,可以看下图:

6d2c7972072442e79cd60c0d568ebac3.png

接口测试工具如下:


a66c44767c20435facd1cd71d2786602.png


可见是做了referer的,需要对请求header进行处理(参照官网的header设置)。


46128dd2cb064ee68de664f0ffcdefee.png


那么,问题来了,这是在接口测试工具的方法,项目中我们怎么设置header呢?


步骤:

1.我们创建一个vue项目和创建vue.config.js,下载axios,启动

vue create refererdemo
cd refererdemo
yarn add axios
yarn serve

2.vue.config.js里写(配置完vue.config.js记得重启项目才能生效):

module.exports = {
    devServer : {
      proxy: {//代理跨域
        '/xiaomi' : {
          target : 'https://m.mi.com',// 需要代理的地址
          changeOrigin: true,//是否跨域
          secure: false, // 如果是https接口,需要配置这个参数
          pathRewrite: {//重写接口地址
              '^/xiaomi': ''
          },
          headers: {//header设置
            referer: 'https://m.mi.com/',//referer
            origin: 'https://m.mi.com/'
          }
        }
      }
    }
}

3.我们在vue.js里使用这个反向代理

<script>
import HelloWorld from './components/HelloWorld.vue'
import axios from 'axios'
export default {
  name: 'app',
  components: {
    HelloWorld
  },
  created() {
    this.getXiaoMi()
  },
  methods: {
    getXiaoMi(){
      axios({
        method:'post',//post提交
        url:'/xiaomi/v1/home/page',
        headers: {
         'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'//设置from表单提交
        },
        data: { //表单数据(一般post)
            'client_id': '180100031051',
            'channel_id': '0',
            'webp': '1',
            'page_type': 'home'  
        },
        params: { //路径拼写的数据(一般get)
            // 'client_id': '180100031051',
            // 'channel_id': '0',
            // 'webp': '1',
            // 'page_type': 'home' 
        }
      }).then(data => {
       console.log(data)
     })
    }
  },
}
</script>

4.请求数据的结果

5eee06755bc1499a9c6213c330f7beff.png

状态码200,指向localhost的原因是啥?这就不用说了把,反向代理的思想大家应该明白,就是通过一个服务来请求数据,我们在这个服务里拿数据,不直接从接口拿,间接的

e5efd5f78d334bb8a6a9e1a945b61c73.png

数据也确确实实拿到了!好了,本次分享就over了,已经很详细了,举一反三,大家会vue的应该也就会react的了。



相关文章
|
前端开发 测试技术
【前端验证】记录将发包量作为传参以加速debug的环境优化记录
【前端验证】记录将发包量作为传参以加速debug的环境优化记录
|
前端开发 vr&ar
【前端验证】被动响应型uvm_model环境搭建——以握手型ram_model为例
【前端验证】被动响应型uvm_model环境搭建——以握手型ram_model为例
|
1月前
|
前端开发 数据安全/隐私保护
angular前端基本页面验证
angular前端基本页面验证
29 1
|
1月前
|
存储 前端开发 Java
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
本文介绍了使用Kaptcha插件在SpringBoot项目中实现验证码的生成和验证,包括后端生成验证码、前端展示以及通过session进行验证码校验的完整前后端代码和配置过程。
133 0
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
|
3月前
|
前端开发 JavaScript
这篇文章介绍了如何使用form表单结合Bootstrap格式将前端数据通过action属性提交到后端的servlet,包括前端表单的创建、数据的一级和二级验证,以及后端servlet的注解和参数获取。
这篇文章介绍了使用AJAX技术将前端页面中表单接收的多个参数快速便捷地传输到后端servlet的方法,并通过示例代码展示了前端JavaScript中的AJAX调用和后端servlet的接收处理。
这篇文章介绍了如何使用form表单结合Bootstrap格式将前端数据通过action属性提交到后端的servlet,包括前端表单的创建、数据的一级和二级验证,以及后端servlet的注解和参数获取。
|
3月前
|
前端开发 开发者 UED
数据校验的艺术:揭秘JSF如何将前端与后端验证合二为一,打造无缝用户体验
【8月更文挑战第31天】JavaServer Faces(JSF)是构建企业级Web应用的Java规范,提供了丰富的组件和API,便于快速搭建用户界面。JSF验证框架基于JavaBean验证API(JSR 303/JSR 380),利用注解如`@NotNull`、`@Size`等在模型类上定义验证规则,结合前端的`&lt;h:inputText&gt;`和`&lt;h:message&gt;`标签展示错误信息。
43 0
|
3月前
|
前端开发 数据库 Python
中后台前端开发问题之验证用户提供的uid和token的有效性如何解决
中后台前端开发问题之验证用户提供的uid和token的有效性如何解决
20 0
|
5月前
|
存储 前端开发 搜索推荐
Web前端网站(一) - 登录页面及账号密码验证
页面背景动态是烟花和文字特效与缓缓下落的雪花相结合,在登录表单的旁边还有五个白色光圈以不规则的方式环绕,当鼠标靠近时,会发出彩色的光芒~~~
95 1
Web前端网站(一) - 登录页面及账号密码验证
|
5月前
|
前端开发 JavaScript
阿里云验证码2.0 验证时报错 前端页面获取的验证参数有问题,动态JS加载失败,请问怎么解决啊?急,急,急。
用户反馈校验时遇到错误,日志显示验证码参数获取异常。采用无痕验证,失败后,返回`{captchaResult:false,bizResult:false}`,未触发滑块二次验证。
|
前端开发 Python
【前端验证】通用型顺序比对的uvm scoreboard组件编写
【前端验证】通用型顺序比对的uvm scoreboard组件编写
254 0

热门文章

最新文章

下一篇
无影云桌面