spring 设置跨域 CORS (Cross Origin Resources Share) 跨域

Spring提供了三种方式跨域

1、CorsFilter 过滤器

2、<mvc:cors> Bean

3、@CrossOrigin注解

以上三种方式本质都是用来配置CorsConfiguration

1、CorsFilter 过滤器

首先创建一个自己的过滤器

这里我创建一个类,名字为MyCorsFilter

import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

import java.util.Collections;

public class MyCorsFilter extends CorsFilter {
    public MyCorsFilter() {
        super(configurationSource());
    }
    private static UrlBasedCorsConfigurationSource configurationSource(){

        UrlBasedCorsConfigurationSource source=new UrlBasedCorsConfigurationSource();
        CorsConfiguration corsConfiguration=new CorsConfiguration();
                                                                   /*
                                                                    *允许跨域的地址
                                                                    *http://127.0.0.1:8848*/
        corsConfiguration.setAllowedOrigins(Collections.singletonList("http://127.0.0.1:8848"));
        corsConfiguration.setAllowCredentials(true);
        //允许跨域的路径
        source.registerCorsConfiguration("/tagc",corsConfiguration);
        return source;
    }
}

创建好后,进行在web.xml文件进行配置

<filter>
        <filter-name>cors</filter-name>
        <!--过滤器地址-->
        <filter-class>com.wbg.maven1128.controller.MyCorsFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>cors</filter-name>
        <!--拦截所有-->
        <url-pattern>/*</url-pattern>
    </filter-mapping>

2、<mvc:cors> Bean

在spring-web里面进行配置

    <mvc:cors>
        <mvc:mapping path="/taga"
                     allowed-origins="http://127.0.0.1:8020"
                     allowed-methods="POST,GET, OPTIONS,DELETE,PUT"
                     allowed-headers="Content-Type,ContentType,Access-Control-Allow-Headers, Authorization, X-Requested-With"
                     allow-credentials="true"/>
    </mvc:cors>

3、@CrossOrigin注解

定义在类上,所有方法有效,@CrossOrigin不带参数就是默认

定义在方法上,该方法有效

测试页面

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <script src="http://code.jquery.com/jquery.js"></script>
    <body>
    <button onclick="aa() ">开始</button>
<script>

    function aa(){
        if(window.confirm("是否发送?")){

        fetch("http://localhost:8080/taga",{
            method:"get"
        }).then(function(res){
            resp.text().then(function(data){
                console.log(data);
            });
        })
        }
        else {
            fetch("http://localhost:8080/tagb",{
                method:"get"
            }).then(function(res){
                res.text().then(function(data){
                    console.log(data);
                })

            })
        }
    }
</script>
    </body>
</html>

跨域

原文地址:https://www.cnblogs.com/weibanggang/p/10031600.html

时间: 2024-11-09 01:04:01

spring 设置跨域 CORS (Cross Origin Resources Share) 跨域的相关文章

Spring 跨域问题CORS (Cross Origin Resources Share)

1.Spring给我们提供了三种跨域方法 CorsFilter 过滤器 CorsConfiguration Bean @CrossOrigin 注解 2.CorsFilter 过滤器 CorsFilter代码如下: package com.xiaobai.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; i

Ajax本地跨域问题 Cross origin requests are only supported for HTTP

问题:打开本地html文件时,报错如下 Cross origin requests are only supported for protocol schemes: http, data,chrome-extension, https, chrome-extension-resource. 分析:浏览器为了安全性考虑,默认对跨域访问禁止. 解决:给浏览器传入启动参数(allow-file-access-from-files),允许跨域访问. Windows下,运行(CMD+R)或建立快捷方式:

Ajax本地跨域问题 Cross origin requests are only supported for HTTP(针对jQuery基础教程第四版第六章)

出现的问题: 解决的步骤: 谷歌浏览器出现的效果: 针对jQuery基础教程(第四版),第六章  成功: 原文地址:https://www.cnblogs.com/qinghui258/p/8432569.html

本地数据访问时出现跨域问题Cross origin requests are only supported for protocol schemes: ……

从桌面找到Chrome图标,右键属性,快捷方式,起始位置(安装路径) 注:在cmd中访问Program Files文件的方法 %ProgramFiles%=C:\Program Files %ProgramFiles(x86)%=C:\Program Files (x86) %ProgramW6432%=C:\Program Files 在命令行用start启动Chrome,然后加参数   (前面加一个空格)--disable-web-security --user-data-dir="E:/a

Node.js 【CORS(cross origin resource sharing) on ExpressJS之笔记】

app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }); app.get('/', function(req,

跨域(CORS)

1. 概念 同源策略:源就是协议.域名和端口号,同源策略是浏览器的一种安全功能,不同源(协议或域名或端口不同)之间不能相互读写. 跨域资源共享(CORS):跨域资源共享(Cross Origin resource sharing)是一种机制,它使用额外的HTTP头来告诉浏览器,让运行在一个origin(domain)上的web应用被准许访问来自不同源服务器上的指定的资源.当一个资源从与该资源本身所在的服务器不同的域.协议或端口请求一个资源时,资源会发起一个跨域HTTP请求. 简单请求:该请求不会

Spring Boot中通过CORS解决跨域问题

今天和小伙伴们来聊一聊通过CORS解决跨域问题. 同源策略 很多人对跨域有一种误解,以为这是前端的事,和后端没关系,其实不是这样的,说到跨域,就不得不说说浏览器的同源策略. 同源策略是由Netscape提出的一个著名的安全策略,它是浏览器最核心也最基本的安全功能,现在所有支持JavaScript的浏览器都会使用这个策略.所谓同源是指协议.域名以及端口要相同.同源策略是基于安全方面的考虑提出来的,这个策略本身没问题,但是我们在实际开发中,由于各种原因又经常有跨域的需求,传统的跨域方案是JSONP,

Jetty Cross Origin Filter解决jQuery Ajax跨域访问的方法

当使用jQuery Ajax post请求时可能会遇到类似这样的错误提示 XMLHttpRequest cannot oad http://xxxxxx. Origin http://xxxxxx is not allowed by Access-Control-Allow-Origin. 这是Ajax跨域访问权限的问题,服务器端不接受来自另一个不同IP地址的由脚本文件发出的http请求.解决这个问题需要在服务器端进行配置使服务器端可以接受来自不同域的脚本文件的http请求.一个简单的解决方法是

zuul+security跨域Cors问题解决

zuul+security跨域Cors问题解决 简介 场景 在服务后台都会出现跨域cors问题,不过一般spring解决起来比较方便,在框架+框架的基础上,问题就显得特别明显了,各种冲突,不了解源码的运行原理,解决起来也是有心无力. 这里介绍的是zuul配置了跨域,在前端调用仍然会出现跨域的问题. 一般没有权限的接口加上cors配置就会通过跨域的问题.不过在服务间调用具有权限的功能,莫名的报跨域问题. post特殊请求 在解决问题时发现 post 请求也有点特殊,这里也需要处理一下. post请