当前位置: 首页 > 编程日记 > 正文

kotlin设置CORS跨域资源共享,java设置允许跨域,服务端如何设置 springboot中设置跨域资源共享

CORS通信过程,都是浏览器或http插件自动完成,不需要 用户/开发人员 参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码是完全一样的。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求(预检译请求),但用户不会有感觉。
所以:实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。

一、请求的不同

浏览器将CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request)。

只要同时满足以下两大条件,就属于简单请求。

(1) 请求方法是以下三种方法之一:

  • HEAD
  • GET
  • POST

(2)HTTP的头信息不超出以下几种字段:

  • Accept
  • Accept-Language
  • Content-Language
  • Last-Event-ID
  • Content-Type:只限于三个值application/x-www-form-urlencodedmultipart/form-datatext/plain

这是为了兼容表单(form),因为历史上表单一直可以发出跨域请求。AJAX 的跨域设计就是,只要表单可以发,AJAX 就可以直接发。

凡是不同时满足上面两个条件,就属于非简单请求。

浏览器对这两种请求的处理,是不一样的。

二、服务端需要的支持

当进行跨域资源访问时,使用了上面的非简单请求👆(HTTP的头信息中出现了以上枚举以外的字段或请求方式复杂)需要服务端进行配置,在springboot项目中可以这样设置:

  • java版本
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {public void addResourceHandlers(@NotNull ResourceHandlerRegistry registry) {super.addResourceHandlers(registry);}public void configureViewResolvers(@NotNull ViewResolverRegistry registry) {super.configureViewResolvers(registry);}public void addInterceptors(@NotNull InterceptorRegistry registry) {}// 这里设置跨域资源访问public void addCorsMappings(@NotNull CorsRegistry registry) {Intrinsics.checkParameterIsNotNull(registry, "registry");// 设置headers中可以添加任何信息访问/api/v1下的所有接口registry.addMapping("/api/v1/**").allowedOrigins(new String[]{"*"});}public void configureMessageConverters(@NotNull List converters) {super.configureMessageConverters(converters);}
}
  • kotlin版本
@Configuration
@EnableWebMvc
class WebConfig : WebMvcConfigurer{override fun addResourceHandlers(registry: ResourceHandlerRegistry) {super.configureViewResolvers(registry)}override fun addInterceptors(registry: InterceptorRegistry) {}// 这里设置跨域资源访问override fun addCorsMappings(registry: CorsRegistry) {// 设置headers中可以添加任何信息访问/api/v1下的所有接口registry.addMapping("/api/v1/**").allowedOrigins("*")}override fun configureMessageConverters(converters: MutableList<HttpMessageConverter<*>>) {super.configureMessageConverters(converters)}
}

2022-03-14续
在这里插入图片描述

梅开二度?

最近我在本地调试一些项目时,发现这种方法并不能完全解决问题,于是我又写了一篇,补上了另外两种方法,如果上面的方法不适合你,那不妨试试 这个 ,包你满意!

相关文章:

创建数据库,指定数据库的字符集和编码顺序

创建数据库&#xff0c;指定它的字符集和编码顺序 create database {数据库名称} CHARACTER SET {字符集} COLLATE {排序规则}举例&#xff1a; create database collage CHARACTER SET utf8mb4 COLLATE utf8_general_ci

Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常

kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized 注解类加载延迟导致的异常 解决方法一&#xff1a;工厂模式 建一个工厂类&#xff0c;如UserServiceFactory&#xff0c;使用该方法 java版&#xff1a; public abs…

kotlin中继承父属性使用构造方法

kotlin中继承父属性使用构造方法 1. 定义父类&#xff0c;给它两个属性&#xff1a; abstract class AbstractResponseMessage {private var success trueprivate var reason: String? nullconstructor() {}constructor(success: Boolean, reason: String?) {this.succes…

在kotlin companion object中读取spring boot配置文件,静态类使用@Value注解配置

在kotlin companion object中读取配置文件 静态类使用Value注解配置 class Config {Value("\${name}")fun setName(name: String) {Config.name name}companion object {private var name:String ? nullfun getName(): String {return name}} }在companion object…

微信公众号为指定openid用户推送消息

微信公众号为指定openid用户推送消息 微信提供的开放接口中&#xff0c;有两个给指定openid的用户发送信息的接口&#xff0c;适用场景应该是向 预约用户或者中奖用户发送消息。 第一个接口&#xff1a;客服发送消息 请求方式&#xff1a; POST 请求地址&#xff1a;https://a…

Docker容器的备份与恢复,Docker镜像的备份与恢复

1. 备份容器 首先&#xff0c;为了备份Docker中的容器&#xff0c;我们会想看看我们想要备份的容器列表。要达成该目的&#xff0c;我们需要在我们运行着Docker引擎&#xff0c;并已创建了容器的Linux机器中运行 docker ps 命令。 # docker ps Docker Containers List 在此之…

SpringBoot部署脚本,拿走即用!

一个可以直接拿来使用的shell脚本&#xff0c;适用于springboot项目 #!/bin/bash # 这里可替换为你自己的执行程序&#xff0c;其他代码无需更改,绝对路径相对路径均可。 # 若使用jenkins等工具远程构建&#xff0c;则使用绝对路径&#xff0c;下面的日志输出路径同&#xff0…

淘宝获取单笔订单信息服务端调用API及流程

淘宝获取单笔交易接口&#xff08;文档地址&#xff09;&#xff1a;https://open.taobao.com/api.htm?docId54&docType2 调用接口所需依赖&#xff08;文档地址&#xff09;&#xff1a;https://developer.alibaba.com/docs/doc.htm?treeId1&articleId101618&d…

在Chrome中打开网页时出现以下问题 您的连接不是私密连接 攻击者可能会试图从 x.x.x.x 窃取您的信息(例如:密码、通讯内容或信用卡信息)

现象&#xff1a;在Chrome中打开网页时出现以下问题 您的连接不是私密连接 攻击者可能会试图从 x.x.x.x 窃取您的信息&#xff08;例如&#xff1a;密码、通讯内容或信用卡信息&#xff09;。 当点开“了解详情”后显示&#xff1a; 了解详情 NET::ERR_CERT_INVALID 将您访问的…

Dockerfile springboot项目拿走即用,将yml配置文件从外部挂入容器

Dockerfile 将springboot项目jar包打成镜像&#xff0c;并将yml配置文件外挂。 # 以一个镜像为基础&#xff0c;在其上进行定制。就像我们之前运行了一个 nginx 镜像的容器&#xff0c;再进行修改一样&#xff0c;基础镜像是必须指定的。而 FROM 就是指定 基础镜像&#xff0c…

解决gitte提交报错 error: GE007: Your push would publish a private email address.

错误情况&#xff1a; gitte提交报错&#xff0c;无法提交上去&#xff0c;报错如下&#xff1a; remote: Powered by GITEE.COM [GNK-6.0] remote: error: GE007: Your push would publish a private email address. remote: You can make your email public or disa…

Reject: HTTP ‘DELETE‘ is not allowed, Not injecting HSTS.....DELETE请求PUT请求跨域问题

CORS&#xff08;DELETE请求、PUT请求&#xff09; Reject: HTTP DELETE is not allowed [DEBUG] 2021-08-25 15:23:52.401 [http-nio-10010-exec-1] HstsHeaderWriter.writeHeaders(169) - Not injecting HSTS header since it did not match the requestMatcher org.springf…

Not injecting HSTS header since it did not match the requestMatcher HSTS设置问题解决

HSTS请求设置 错误描述&#xff1a;在使用文件上传功能时&#xff0c;form表单提交带有header数据的请求时遇到这个问题&#xff0c;报错如下&#xff1a; Not injecting HSTS header since it did not match the requestMatcher org.springframework.security.web.header.wr…

restTemplate http请求报错:no suitable HttpMessageConverter found for response type and content type

报错信息&#xff1a; org.springframework.web.client.UnknownContentTypeException: Could not extract response: no suitable HttpMessageConverter found for response type [class com.xxx] and content type [text/html;charsetutf-8] 异常原因&#xff1a;RestTempla…

mongo报错:not authorized on bb to execute command { create: \“xxx\“...}

mongo报错&#xff1a; {"ok" : 0,"errmsg" : "not authorized on bb to execute command { create: \"a\", capped: \"1\", lsid: { id: UUID(\"f01a76ec-6261-4886-9a3f-e07169eed122\") }, $db: \"bb\" …

阿里云如何将服务器添加至跳板机,如何将服务器添加至jumpsever

如何将服务器添加至跳板机。 获取跳板机/root/.ssh/id_rsa.pub 中的内容 登陆要添加到跳板机的目标机器 /root/.ssh/authorized_keys 将跳板机id_rsa.pub 内容复制到目标机器的authorized_keys中&#xff0c;累加在后面。 目标机器执行service sshd restart 在跳板机控制台添加…

zip压缩多个文件,解压时不包含目录层级

假设我们有个目录叫 dev&#xff0c;dev中有很多文件&#xff0c;我们想要将dev中的文件打包&#xff0c;名字可能叫dev.zip,但当我们解压的时候&#xff0c;不想要解压生成一个dev目录&#xff0c;想要直接解压在当前目录&#xff0c;这样如何压缩呢&#xff1f; # 进入dev目…

过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件

过滤Linux下不同大小的文件&#xff0c;linux查找当前目录下 M/G 大小的文件&#xff0c;删除Linux下指定大小的文件 find ./ -type f -size 1G| xargs rm在清理系统日志文件、备份文件等场景中&#xff0c;可以使用这个命令。 这里的参数还可以改为 100M 等等&#xff0c;也…

mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string

mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string ‘oThZwuK9C-3uWaJaXtbuLJUFTTR4’ 解决方法&#xff1a; 在使用mybatis进行部分字段查询时&#xff0c;查询结果需要放置在对象中&#xff0c;如果参数不全&am…

数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法

数据库中自定义排序 场景&#xff1a;有一张banner表&#xff0c;表中有一个status字段&#xff0c;有0&#xff0c; 1&#xff0c; 2三个状态位&#xff0c;我想要 1&#xff0c;0&#xff0c;2的自定义排序&#xff08;这里是重点&#xff09;&#xff0c;然后再进行之上对s…

docker报错:driver failed programming external connectivity on endpoint, iptables:No chain by that name

docker 报错&#xff1a; Error response from daemon: Cannot restart container hello: driver failed programming external connectivity on endpoint hello (e58d18c830689e296c0fafdd98bf56e973cee3a3fbee8a3f002d46784f69ae70): (iptables failed: iptables --wait -t n…

系统架构升级要不要上微服务?历“久”弥新微服务——你真的需要升级微服务架构吗

在 《微服务架构设计模式》 一书中&#xff0c;作者总结了关于微服务的一些“重点”&#xff0c;原文如下&#xff1a; 中国企业和开发者对微服务架构的热情让我印象深刻。但如同我给所有客户的忠告一样&#xff0c;我想对本书的读者说: 第一&#xff0c;要记住微服务不是…

在k8s中使用gradle构建java web项目镜像Dockerfile

在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chowngradle:gradle . /home/gradle/src WORKDIR /home/gradle/src RUN gradle build --no-daemonFROM openjdk:8-jre-slimEXPOSE 10010RUN mkdir /appCOPY --frombuild /home/gradle/sr…

致26岁的自己

2021年10月17日&#xff0c;晴 想到很久很久没有去记录和输出想法&#xff0c;加上最近在不停地不停地思考&#xff0c;总结一下&#xff0c;并给两年后的自己做一个方向性的规划。 首先就是目前所取得的一个阶段性成果&#xff0c;到目前为止&#xff0c;我已经工作两年。在这…

阿里云K8S容器服务的使用

使用阿里云k8s构建服务一. 上传镜像二. k8s运行三. 服务配置导入四. 服务路由五. 节点亲和性和污点管理一. 上传镜像 在阿里云控制台找到“容器镜像服务”&#xff0c;开启镜像服务&#xff0c;这里选择个人实例即可&#xff08;个人版限额&#xff0c;企业版付费&#xff09;…

nginx配置http、https访问,nginx指定ssl证书,阿里云腾讯云华为云设置nginx https安全访问

nginx配置http、https访问 要设置https访问需要从对应的云厂商申请证书&#xff0c;并下载Nginx证书到服务器。 我这里从阿里云申请了免费的域名证书&#xff0c;然后将证书放置在服务器的/etc/ssl/.com/路径下&#xff0c;开始配置 这里直接上server节点&#xff0c;放在你…

使用hello word写小说

2021-11-12 使用hello word写小说

2021-10-27 我与地坛

2021-10-27 我与地坛 要是有些事我没说&#xff0c;地坛&#xff0c;你别以为是我忘了&#xff0c;我什么也没忘&#xff0c;但是有些事只适合收藏。不能说&#xff0c;也不能想&#xff0c;却又不能忘。它们不能变成语言&#xff0c;它们无法变成语言&#xff0c;一旦变成语言…

mysql查询字段大小写结果相同,mysql大小写查询不敏感,mysql5.7查询不区分大小写解决方案。

下面有两条sql&#xff0c;主键查询&#xff0c;在mysql中查询到的结果相同。 SELECT* FROM USER WHEREid EM58hdK4nXC;SELECT* FROM USER WHEREid em58hdk4nxc;这种情况就是mysql查询大小写结果相同&#xff0c;因为大小写查询不敏感。 解决方法&#xff1a; 工具中&…

redisson get()数据报错,missing type id property ‘@class’

redisson get()数据报错&#xff1a; com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Missing type id when trying to resolve subtype of [simple type, class java.lang.Object]: missing type id property ‘class’ 详细报错信息如下&#xff1a; com.fast…