• 没有前端如何测试后端跨域问题


    一、问题

    前段时间对项目中的跨域做了相关的处理,网上有很多跨域的解决方案。前端解决,后端解决,nginx代理解决。我采用的是在后端中使用Cors来解决跨域的问题。但是前端项目还没有搭建起来,并不知道Cors的解决方案是否会生效,于是在今天进行了测试。

    二、解决方案

    • 直接在浏览器中打开控制台进行测试。
      在这里插入图片描述
    • 浏览器的控制台console直接输入代码
      GET请求
    var token= "你的token"; //没有就省略
    var xhr = new XMLHttpRequest();
    xhr.open('GET', '请求类路径');
    xhr.setRequestHeader("x-access-token",token); //没有就省略
    xhr.send(null);
    xhr.onload = function(e) {
        var xhr = e.target;
        console.log(xhr.responseText);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    POST请求

    var xhr = new XMLHttpRequest();
    xhr.open('POST', '请求路径',true);
    xhr.setRequestHeader('content-type', 'application/json');
    var sendData = {salesmanTel:"4564564"};
     //将用户输入值序列化成字符串
    xhr.send(JSON.stringify(sendData));
    xhr.onload = function(e) {
        var xhr = e.target;
        console.log(xhr.responseText);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    注意:使用浏览器测试,如果不生效,有可能是你没有打开一个网站。比如google浏览器,你不可以在google的首页测试,是没有用的。

    三、思路

    • 我们的项目是基于springboot搭建的java项目,配置了相关的bean,让其对请求进行拦截处理。
    public class DevopsCorsFilter {
        @Bean
        public CorsFilter corsFilter() {
            CorsConfiguration corsConfiguration = new CorsConfiguration();
            // 好像需要制定域
            corsConfiguration.addAllowedOrigin("*");
            corsConfiguration.addAllowedHeader("*");
            corsConfiguration.addAllowedMethod("*");
            corsConfiguration.setAllowCredentials(true);
            UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
            urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
            return new CorsFilter(urlBasedCorsConfigurationSource);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 但是因为不确定这种解决方案可以到达跨域的要求,为了方便测试,我先使用spring自带的@CrossOrigin注解来进行跨域的处理 。
    • 对于@CrossOrigin注解,大家可以参考这篇文章 @crossOrigin介绍及使用
    • 如果我使用 @CrossOrigin 再加上使用浏览器跨域访问解决,那就说明我上面 CorsConfiguration bean的配置是正确的。
      在这里插入图片描述

    四、测试

    • 在浏览器输入相关的配置(我的接口没有做鉴权,所有没有token)
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'http://localhost:8081/devops/app/user/getPageQuery');
    xhr.send(null);
    xhr.onload = function(e) {
        var xhr = e.target;
        console.log(xhr.responseText);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 在浏览器执行后 结果如下 :
      在这里插入图片描述
    • @CrossOrigin注解注释掉后 结果如下 :在这里插入图片描述
    • 由此可见浏览器中是可以测试跨域问题的。
    • 这个时候 我再将 我的 CorsConfiguration bean注入到spring中
      在这里插入图片描述
    • 在浏览器这测试结果如下:
      在这里插入图片描述

    五、总结

    如果看到这里了,说明你还是用心读完了。遇到问题不可怕,找对方案,解决问题就好了。

  • 相关阅读:
    c++多态
    17.Table Api基础概念讲解
    uniapp 获取页面来源
    Schrodinger Shape Screen 工具使用方法
    GBase8s逻辑日志
    ConstraintLayout使用 笔记总结
    从零开始C语言精讲篇7:数据的存储
    aspnet zero core 11.3.0 Crack
    wpf devexpress实现输入验证使用验证规则
    数商云B2B商城系统个性化功能详解 | B2B电商模式赋能日化行业加快数字化发展
  • 原文地址:https://blog.csdn.net/aq_money/article/details/133845509