Springboot中实现跨域问题,实现前后端完全分离并方便测试.

1.什么是跨域?什么是不跨域?

解释一:同一个ip、同一个网络协议、同一个端口,三者都满足就是同一个域,否则就是

跨域问题了。而为什么开发者最初不直接定为一切可跨域的呢?默认的为什么都是不可跨域呢?这就涉及到了同源策

略,为了系统的安全,由Netscape提出一个著名的安全策略。现在所有支持JavaScript的浏览器都会使用这个策略。

所谓同源是,域名,协议,端口相同。当我们在浏览器中打开百度和谷歌两个网站时,百度浏览器在执行一个脚本的

时候会检查这个脚本属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会被执行,如果没有同源策略,那

随便的向百度中注入一个js脚本,弹个恶意广告,通过js窃取信息,这就很不安全了。

解释二:跨域请求,就是说浏览器在执行脚本文件的ajax请求时,脚本文件所在的服务地址和请求的服务地址不一样。说白了就是ip、网络协议、端口都一样的时候,就是同一个域,否则就是跨域。这是由于Netscape提出一个著名的安全策略——同源策略造成的,这是浏览器对JavaScript施加的安全限制。是防止外网的脚本恶意攻击服务器的一种措施。


2.springboot下解决跨域的方法步骤如下(利用@Configuration配置跨域):

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
@Configuration
public class CorsConfig {
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); // 1
        corsConfiguration.addAllowedHeader("*"); // 2
        corsConfiguration.addAllowedMethod("*"); // 3
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig()); // 4
        return new CorsFilter(source);
    }
}
第二中代码方法

package com.chengzai.web.home.CorsConfiguration.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
 * 跨域访问更改权限
 *
 * @author jzwx
 * @version $Id: CorsConfig, v 0.1 2017-09-26 15:39 jzwx Exp $
 */
@Configuration
public class CorsConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**").allowedOrigins("*")
            .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
            .allowCredentials(false).maxAge(3600);
    }
}

①在项目能够扫描的的配置模块下导入该Java文件(CorsConfig.java).

②启动Tomcat,windows+R输入cmd在DOS下输入ipconfig查询自己的ipv4地址,然后将自己局域网IP和端口号还有访问路径(自己的Controller目录中的路径)发送给前端这就就可以进行前后端联调了.

注意:springboot下注释WebSecurityConfiguration.java+MultiHttpSecurityConfig.java文件就不需要登录了

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 Spring Boot + Vue + Webpack 来实现前后分离的框架,具体代码如下:Spring Boot:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>Vue:<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>Webpack:const path = require('path'); const webpack = require('webpack');module.exports = { entry: './src/js/app.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js' }, plugins: [ new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery' }) ] }; ### 回答2: 要实现Spring Boot和Vue的前后分离,可以使用以下具体的框架和代码: 1. 后使用Spring Boot框架实现RESTful API: - 创建一个Spring Boot项目,添加所需的依赖(如Spring Web、Spring Data JPA等)。 - 在项目创建一个Controller类,使用`@RestController`注解标记。 - 编写各个API接口对应的方法,并使用`@RequestMapping`等注解进行路由映射。 - 可以使用Spring Data JPA来简化数据库操作,创建实体类和对应的Repository接口。 - 通过`@CrossOrigin`注解允许请求。 2. 前使用Vue框架实现单页应用: - 创建一个Vue项目,可以使用Vue CLI工具进行脚手架搭建。 - 在项目创建相应的组件,用于展示数据和处理用户交互。 - 使用Vue Router进行前路由管理。 - 使用Axios库进行前后数据交互,发送HTTP请求获取后API返回的数据。 - 使用Vue的生命周期钩子函数和Vue的数据绑定特性来处理页面逻辑。 3. 连接前后: - 在Vue的组件使用Axios发送请求到后API。 - 接收后返回的数据,并在页面上进行展示。 - 在触发某些事件时,调用Axios发送请求到后API来更新数据。 这样,就可以实现前后分离的架构。后通过Spring Boot框架提供RESTful API,前使用Vue框架构建单页应用,并通过Axios库发送HTTP请求和后进行数据交互。通过这种方式,前后可以独立开发和部署,提高了开发效率和灵活性。 ### 回答3: 要实现Spring Boot和Vue的前后分离,可以采用以下具体的框架和代码实现。 1. 后框架:Spring Boot Spring Boot是一种用于构建独立的、基于Spring的Java应用程序的框架。它可以简化Spring应用程序的配置和部署,并提供了可集成的开发和测试工具。使用Spring Boot可以快速搭建后API服务。 2. 前框架:Vue.js Vue.js是一种用于构建用户界面的JavaScript框架,它可以实现响应式的数据绑定和组件化的开发。Vue.js使用简洁的语法和强大的生态系统,使得前开发更加高效和可维护。 3. 框架整合 在实现前后分离的过程,可以通过Restful API进行前后数据交互。后使用Spring Boot提供API接口,前使用Vue.js发起HTTP请求获取数据。 典型的框架代码结构如下: - 后代码结构 - src/main/java - com.example.demo - controller - UserController.java:定义用户相关的API接口,处理HTTP请求。 - model - User.java:定义用户类,包含用户的属性和方法。 - service - UserService.java:定义用户相关的业务逻辑,如用户的增删改查。 - UserServiceImpl.java:实现UserService接口的具体逻辑。 - repository - UserRepository.java:定义用户数据的访问方式,如数据库操作。 - src/main/resources - application.properties:配置Spring Boot应用的相关属性。 - 前代码结构 - src - components - UserList.vue:用户列表组件,展示后返回的用户数据。 - views - User.vue:用户界面,包含用户的增删改查等操作。 - router - index.js:前路由配置文件,定义前路由和页面的映射关系。 - App.vue:根组件,包含整个前应用的布局和共享逻辑。 - main.js:入口文件,初始化Vue应用。 以上是一个简单的示例,可以根据实际需求和复杂程度进行相应的调整。通过Spring Boot提供API接口,Vue.js发起HTTP请求获取数据,实现了前后分离的开发模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值