首页 > 其他分享 >跨域问题解决

跨域问题解决

时间:2024-02-18 21:56:03浏览次数:33  
标签:跨域 sex 问题 source 解决 new config public

跨域

举例A网站部署在 localhost:63343 请求 loocalhost:8080/api/user/add,就会出现跨域问题。


同源策略

同源策略:协议主机端口,只有这三者全部相同时,才可以相互访问。

现在接口地址为101.10.11.1X:8081,请判断以下哪些可以通过:

访问地址 描述 结果
https://127.0.0.1:8080/api/mall/list 协议、主机、端口都相同 通过
https://127.0.0.1:8081 端口不同 不通过
https://127.0.0.2:8080 主机不同 不通过
http://127.0.0.1:8080 协议不同 不通过

跨域问题解决

CORS解决跨域

CORS背后的基本思想是使用自定义的HTTP头部允许浏览器和服务器相互了解对方,从而决定请求或响应成功与否。

Access-Control-Allow-Origin: 指定授权访问的域
Access-Control-Allow-Methods:授权请求的方法(GET, POST, PUT, DELETE,OPTIONS等)

Spring 配置:

@Configuration
public class CorsConfig {

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();

        // 允许的前端域
        config.addAllowedOrigin("*");
        // 其他跨域配置,例如允许的方法、头部等
        config.addAllowedMethod("*");
        config.addAllowedHeader("*");

        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }
}

举例

前端HTML文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>test</title>
    <meta charset="utf-8">
    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
</head>

<body>

<label for="username">姓名:</label><input id="username" placeholder="请输入姓名"></input>
<label for="sex">性别:</label><input id="sex" placeholder="请输入性别"></input>
<button onclick="addUser()">添加用户</button>

</body>
<script>
    function addUser() {
        const username = document.getElementById("username").value;
        const sex = document.getElementById("sex").value;

        axios({
            method: 'post',
            url: "http://localhost:8080/user/add",
            data: {
                username: username,
                sex: sex
            }
        }).then(function (response) {
            console.log(response.data)
        }).catch(function (error) {
            console.error("错误", error);
        });
    }

</script>
</html>

SpringBoot 后端文件:

@RestController
@RequestMapping("/user")
public class UserController {

    @RequestMapping("/add")
    public String hello(@RequestBody UserInfoDto userInfoDto) {
        System.out.println(userInfoDto);
        return "Hello, User!";
    }
    
}


@Data
public class UserInfoDto {
    private String username;
    private String sex;
}


@Configuration
public class CorsConfig {

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();

        // 允许的前端域
        config.addAllowedOrigin("*");
        // 其他跨域配置,例如允许的方法、头部等
        config.addAllowedMethod("*");
        config.addAllowedHeader("*");

        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }
}

标签:跨域,sex,问题,source,解决,new,config,public
From: https://www.cnblogs.com/handsometaoa/p/18020023

相关文章

  • 苹果iPhone手机Trollstore巨魔2必备神器Misaka.ipa签名安装支持iOS15.5~16.6.1错误如
    文末附工具链接和视频介绍引言上一篇,介绍了哪些设备可以安装巨魔2:巨魔TrollStore2已经支持更多版本和型号A12-A17今天继续实战介绍,如何在iPhone上安装巨魔TrollStore2的前置工作,通过Misaka来安装巨魔TrollStore2,先进行Misaka.ipa签名安装。Misaka支持哪些iOS版本和方式......
  • docker 搭建最新minio访问不了页面解决
    一.搭建过程#可以查找minio的版本,找到下载次数最多的dockersearchminio#拉取minio镜像dockerpullminio/minio#创建容器,两个key分别是登录的账号和密码,密码必须为8位dockerrun-d-p9000:9000--name=minio--restart=always-e"MINIO_ROOT_USER=admin"-e"M......
  • 如果由于大量数据插入数据库导致数据库性能持续下降问题?该如何进行性能优化?
    有些操作会使数据库的性能下降,MySQL是一种常用的关系型数据库管理系统,性能下降可能是由索引问题、查询语句问题、数据更新问题、锁竞争、配置参数问题、硬件资源问题或者慢查询等多种因素引起的。针对具体情况进行分析和优化可以提高MySQL的性能。本文主要介绍MySQL数据库当大量数......
  • Ubuntu20.04 问题+解决方案(不定期更新)
    问题1:Ubuntu20.04错误提醒:无法修正错误E:Unabletocorrectproblems,youhaveheldbrokenpackages.例如:解决方案:https://blog.csdn.net/weixin_44284939/article/details/122647791问题2:dpkg:errorprocessingpackage***(--configure)错误解决办法E:Sub-proce......
  • ef 中无法提前使用 linq 查询的解决办法?
    ef中有如下的查询条件,在.ToList之后它可以被翻译为sql,但在.ToList之前不行,我该如何写出等价可被翻译的.Where条件?.Where(x=>selectedBookItems.Any(y=>y.BookID==x.BookID)).Where(x=>etSearchTitle.Text.Split(newString[]{""},Str......
  • NewStarCTF 2023 WEEK2|REVERSE SMC 使用IDApython静态解决SMC
    先来一篇IDApyhotn的指令教程https://www.cnblogs.com/zydt10/p/17676018.html*自己编的这题对应的expa=[0x11,0x22,0x33,0x44]foriinrange(38):result=a[i&3]ida_bytes.patch_byte(0x403040+i,get_wide_byte(0x403040+i)^result)在IDA中运行完exp之后,......
  • safari浏览器正则表达式兼容问题
    发现问题解决问题1、正则格式不对2、IOS,MAC不支持零宽断言 发现问题在开发过程中难免会使用正则表达式来匹配或替换一些文本(字符串),原本以为在不同的浏览器,正则表达式是一样的。然而在实际开发测试中却遇到了问题。一般正则表达式使用的谷歌浏览器,火狐浏览器都正常,而在safari浏......
  • 场景问题解决方法
    1.tomcatspringboot通过域名访问时直接跳到127.0.0.1的问题这种情况极可能是因为 server.xml配置问题导致,可以参考这篇文章tomcat设置http代理详细教程-知乎(zhihu.com)2.如何访问内网中所有的服务和站点要访问一个内网中所有的服务和站点(如内网的所有网站和数据库等),......
  • redis高频问题--缓存击穿
    缓存击穿互斥锁==分布式锁互斥锁多用于关于钱的业务,保持强一致性性能差一些,因为需要互相等待逻辑过期保证高可用性,注重于用户的体验......
  • v-if后的echarts显示已有dom解决方法
    控制台报错:Thereisachartinstancealreadyinitializedonthedom. 核心思路:先判断dom是否存在,如存在就调用销毁方法,再初始化正常操作。echarts内:if(this.myChart!=null&&this.myChart!=""&&this.myChart!=undefined......