springboot实现ajax跨域请求

springboot实现ajax跨域请求有段时间没写文章了。看到有人提问ajax跨域请求的问题。博主要再次强调,跨域,就是从不同的的IP端口获取数据,比如说,从www.baidu.com获取数据,就叫跨域!那么localhost:8080与localhost:8081之间呢?也叫跨域。如果处理的不好,就会报错,不仅前端报错,后端也会报错。那么如何解决呢?着急的人,请直接往下看,不急的请听我细细道来,一定能解决您的问题。我再此保证

大家好,又见面了,我是你们的朋友全栈君。

有段时间没写文章了。看到有人提问ajax跨域请求的问题。

博主要再次强调,跨域,就是从不同的的IP端口获取数据,比如说,从www.baidu.com获取数据,就叫跨域!那么localhost:8080与localhost:8081之间呢?也叫跨域。如果处理的不好,就会报错,不仅前端报错,后端也会报错。

那么如何解决呢?着急的人,请直接往下看,不急的请听我细细道来,一定能解决您的问题。我再此保证!

好多人都说,spring对跨域有自己的一套,比如实现了这个类那个类的。还有说是在ajax里面加上 _method 等等,众说纷纭啊!到底是不是大家所说的那样呢?先来看下常规的。解决PUT和DELETE请求时,_method方法到底好不好使呢??答案是,确实管用!那么实现其他类好使吗?答案是:在springboot中不适用。因为它没有XML可以配置。OK,好了,既然你说_method能解决PUT请求,那就用它呗。答案是,肯定不行。为啥不行呢?

你想一想,你要去用PUT,DELETE,说明什么?肯定是RestFul请求啊,对不对。既然是rest,那么肯定会部署服务器啊,那么服务器的端口和地址肯定不是你本机吧,那你怎么指定啊?涉及什么问题啊,跨域,是跨域了,对不对?都跨域了,你是不是应该解决跨域问题啊。那你这个_method方法还能搞定需求吗,指定不能啊。那咋办啊?网上有很多答案,比如jsonp啊,$.getJSON啊等等,太多太多。但实际解决的问题,很少。比如jsonp他的返回格式需要callback,那么你封装json时就要加入callback,那么就毁坏了rest的格式。至于其他的,更别提了,不实用。

直接看代码,

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

@Configuration
public class CrossDomain extends WebMvcConfigurerAdapter {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**").allowedOrigins("*")
                .allowedMethods("GET", "HEAD", "POST","PUT", "DELETE", "OPTIONS")
                .allowCredentials(false).maxAge(3600);
    }
}

直接把这个代码粘贴进去启动,就会完成跨域的安全性过滤。

原理还得看代码。以后有时间,我会和大家一起分析代码。先到这吧,谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150124.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • sql server 2008修改端口_sqlserver 端口

    sql server 2008修改端口_sqlserver 端口打开开始菜单,找到sqlserver的配置管理器,点击打开按下图配置右边窗口三项:按下图配置右边三项:按下图配置右边三项:点击下图左边的SQLServer网络配置/MSSQLSERVER的协议,然后在双击右边窗口的TCP/IP项,打开tcp/ip配置窗口。切换到ip地址选项卡,凡是tcp端口的,均把原来的默认端口1433改为1772。然后保存。在这个过程中,有几项的修改会有这样的提示:点击确定…

    2022年10月20日
  • mysql connector安装教程_Debezium:mysql connector安装[通俗易懂]

    mysql connector安装教程_Debezium:mysql connector安装[通俗易懂]前言:debezium提供了多种基于kafka的连接器,方便对RDB做数据流处理,包括:MongoDB,Oracle,Mysql,SqlServer,Postgresql,可扩展性强,代码可控,本篇介绍基于mysql的安装使用插件版本:Kafka:CDK3.10(相当于Kafka1.1版本),这里需要kafka0.10以上版本才能支持Debezium:0.83Mysql:5.5(mysql5…

  • Bash Export命令「建议收藏」

    Bash Export命令「建议收藏」一.shell和export《1》用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一个是系统为运行脚本程序创建的shell。当一个脚本程序运行完毕,脚本shell将终止,返回…

  • mysql executereader_C# 操作MySQL数据库, ExecuteReader()方法参数化执行T-SQL语句, 游标读取数据…

    mysql executereader_C# 操作MySQL数据库, ExecuteReader()方法参数化执行T-SQL语句, 游标读取数据…C#操作MySQL数据库需要引用”MySql.Data”,可通过两种方式获取。1、从NuGet下载”Install-PackageMySql.Data-Version6.8.7″推荐使用方式一,从NuGet上直接获取所需dll,方便快捷。C#操作MySQL数据库,ExecuteReader()方法参数化执行T-SQL语句,游标读取数据–ExecuteNonQuery()对连接执…

  • elementUI 时间格式化

    elementUI 时间格式化1.html:<el-table-columnprop=”dateTime”:formatter=”dateFormat”label=”日期”></el-table-column>2.vue的methods里面//方法methods:{//时间格式化dateFormat(row,colum…

  • Node.js实战:Express实现简单后台登录系统

    Node.js实战:Express实现简单后台登录系统1.建立Express项目在进行以下操作之前,请确保你的电脑已经装好Node.js和Express框架。首先打开命令行提示符,输入express–view=ejs-ewww其中–view=ejs表示使用ejs模版引擎,-e指定项目名称,此处设为www。回车之后,当前文件夹下会多出一个名为www的文件夹,这个就是我们项目所在的地方。此时,www文件夹中默认已经有了基本的文件,但是相关

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号