首页 > 编程语言 >java 同源Cors 解决跨域及填坑总结

java 同源Cors 解决跨域及填坑总结

时间:2022-09-01 13:11:49浏览次数:66  
标签:java 跨域 corsConfiguration springframework 填坑 同源 org import

1.为什么会跨域

出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)

2.什么是跨域

当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域

3.前端跨域的表现

4.跨域解决方法 之 后台配置同源Cors

我解决跨域是参考解决跨域这篇博客 ,但是他的方法有点问题哈 报错

报错信息:
"When allowCredentials is true, allowedOrigins cannot contain the special value \"*\"since that cannot be set on the \"Access-Control-Allow-Origin\" response header. To allow credentials to a set of origins, list them explicitly or consider using \"allowedOriginPatterns\" instead."
解决办法就是allowedOrigins 替换成 addAllowedOriginPattern

下面贴出完整的正确代码


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 {
   @Bean
   public CorsFilter corsFilter() {
       final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
       final CorsConfiguration corsConfiguration = new CorsConfiguration();
       /*是否允许请求带有验证信息*/
       corsConfiguration.setAllowCredentials(true);
       /*允许访问的客户端域名*/
       corsConfiguration.addAllowedOriginPattern("*");
       /*允许服务端访问的客户端请求头*/
       corsConfiguration.addAllowedHeader("*");
       /*允许访问的方法名,GET POST等*/
       corsConfiguration.addAllowedMethod("*");
       urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
       return new CorsFilter(urlBasedCorsConfigurationSource);
   }
}

前端ajax代码

$.ajax({
		type: "POST",
		url: "http://localhost:8083/jjshipping/user/register",
		data: registerDto,
		success: function(msg) {
			alert("Data Saved: " + msg);
			console.log(msg);
		}
	});

标签:java,跨域,corsConfiguration,springframework,填坑,同源,org,import
From: https://www.cnblogs.com/Leehomwang/p/16646130.html

相关文章

  • JavaMath类
    方法描述abs()返回参数的绝对值ceil()对number类型变量向上取整,返回值类型为double类型floor()对number类型变量向下取整,返回值类型为double类型rint......
  • Java命名方式
    Java所有的组成部分都需要有名字。类名、变量名以及方法名都被称为标识符。标识符注意点:所有的标识符都应该以字母(A-Z或者a-z)、美元符($)、或者下划线(_)开始。首字符之后......
  • 如何在 Javascript 中清空数组?
    如何在Javascript中清空数组?在使用JavaScript编程时,程序员可能需要在许多情况下将数组设为空,一个非常常见的问题是如何清空数组并删除其所有元素!顺便说一句,这是最受......
  • JavaScript 中的构造函数和新的运算符
    JavaScript中的构造函数和新的运算符ConstructorFunctionsandthenewOperator你好,我是Gibson,在这篇博客中,我们将学习构造函数和新的运算符。我们可以使用构造函......
  • 力扣388(java)-文件的最长绝对路径(中等)
    题目:假设有一个同时存储文件和目录的文件系统。下图展示了文件系统的一个示例: 这里将dir作为根目录中的唯一目录。dir包含两个子目录subdir1和subdir2。subdir1......
  • Java 运算符
    运算符大致分为以下几种:算术运算符关系运算符位运算符逻辑运算符赋值运算符其他运算符 算术运算符表格中的实例假设整数变量A的值为10,变量B的值为20:操作符......
  • Javascript 计时器
    Javascript计时器在本文中,我们将深入开发基于html、css和js的计时器。首先,我们需要在本地文本编辑器中为每个项目创建一个项目文件夹和文件。最终结果附在下面。......
  • springboot+Vue项目允许跨域
    packagecom.example.demo.itkb.user.config;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.config.annotat......
  • 高级开发人员知识:JavaScript 数组方法第 3 部分
    高级开发人员知识:JavaScript数组方法第3部分今天让我们来点高级的。这些数组方法总是遍历数组。基本上,您可以通过基本的for循环获得相同的功能。如果是这样,我们为什......
  • Java入门-基础语法(基本运算符)
    基本运算符优先级算数运算符:+,-,*,/,%(取余),++,--赋值运算符:=关系运算符:>,<,>=,<=,==,!=,instanceof逻辑关系符:&&,||,!位运算符:&,|,^,~,>>,<<,>>(了解)条件运算符:?扩......