springboot 跨域处理示例代码

springboot处理跨域请求代码

在前、后端开发分离场景下,前段通过接口获取后端的数据,不可避免的碰到CORS问题,这里主要讲述后端代码允许修改的方案,记录springboot处理跨域的代码示例。如果后端是第三方提供,一般处理方案有自己封装第三方接口和用nginx等反向代理服务,不在这里讲述。

拦截http的OPTIONS方法,不要传递到controller方法

public class MyFilter extends HandlerInterceptorAdapter {
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
        throws Exception {
            if (request.getMethod().equals("OPTIONS")) {
                return true;
            }
            //认证或其他业务代码
            return true;
        }
    }

跨域http头设置代码如下:

 @Configuration
  public class CorsConfig {
     @Bean
     public FilterRegistrationBean corsFilter() {
         UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
         CorsConfiguration config = new CorsConfiguration();
         // 打开支持GET、POST、HEAD方法开关
         config.applyPermitDefaultValues();
         // true,接受浏览器cookie;false,不接受cookie
         config.setAllowCredentials(false);
         // 允许的域名
         config.setAllowedOrigins(Arrays.asList(allowedOrigin.split(",")));
         // 允许的额外消息头(默认:Cache-Control, Content-Language, Expires, Last-Modified, or Pragma. ),此处token为自定义头
         config.setAllowedHeaders(Arrays.asList("token", "Content-Type"));
          // 允许的方法
         config.setAllowedMethods(Arrays.asList("GET", "POST", "OPTIONS"));
         // 客户端可以拿到的额外消息头(默认:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma)
         config.setExposedHeaders(Arrays.asList("token", "content-disposition"));
         // Access-Control-Max-Age Header
         source.registerCorsConfiguration("/**", config);
         FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
         bean.setOrder(0);
         return bean;
  }
}

原文地址:http://blog.51cto.com/13166529/2175942

时间: 2024-07-31 22:15:50

springboot 跨域处理示例代码的相关文章

jquery ajax jsonp跨域调用实例代码

今天研究了AJAX使用JSONP进行跨域调用的方法,发现使用GET方式和POST方式都可以进行跨域调用,这里简单分享下,方便需要的朋友 客户端代码 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApp.WebForm1" %><!DOCTYPE html P

springboot跨域CORS处理

一 源(Origin) 源指URL的协议,域名,端口三部分组成,如果这个三个成分都相同,就判定是同源,否则为不同源. 同源策略(Same origin policy)是一种浏览器的约定,即在浏览器中禁止非同源访问. 二 CORS CORS即"跨域资源共享"(Cross-origin resource sharing),是一个W3C标准.它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了ajax只能同源使用的限制.springboot也提供了cors的解决方法.

asp.net中WebResponse 跨域访问示例

前两天,一个朋友让我帮他写这样一个程序:在asp.net里面访问asp的页面,把数据提交对方的数据库后,根据返回的值(返回值为:OK或ERROR),如果为OK再把填入本地数据库.当时,想当然,觉得很简单,用js的xmlhttp ,如果根据response 的值是“OK”就执行提交本地数据库.很快写完发过去,让朋友试试,一试发现不行,后来一问,原来是跨域访问,我给忽略了,于是让朋友把asp改成web service,可朋友说程序是合作公司做的,只会asp,不会用web service ,狂晕ing

springboot跨域配置

关于什么是跨域的问题,感兴趣的同学可以看阮一峰老师的日志 http://www.ruanyifeng.com/blog/2016/04/cors.html. 下面贴出我在springboot项目中的跨域配置. 1.CorsConfig package com.example.demo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configur

springboot跨域请求

首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 Java小组 工具资源 SpringBoot | 番外:使用小技巧合集 2018/09/17 | 分类: 基础技术 | 0 条评论 | 标签: spring boot 分享到: 原文出处: oKong 前言 最近工作比较忙,事情也比较多.加班回到家都十点多了,洗个澡就想睡觉了.所以为了不断更太多天,偷懒写个小技巧合集吧.之后有时间都会进行文章更新的.原创不易,码字不易,还希望大家多多支持!话不多说,开始今天的技巧合集吧~ 设置网站图标 原

SpringBoot跨域小结

前言:公司的SpringBoot项目出于某种原因,经常样处理一些跨域请求. 一.以前通过查阅相关资料自己写的一个处理跨域的类,如下. 1.1首先定义一个filter(拦截所有请求,包括跨域请求) public class CrossDomainFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) t

Springboot跨域 ajax jsonp请求

SpringBoot配置: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> @SuppressWarnings("deprecation") @Configuration public class CorsFilter ext

springboot 跨域

1. 添加关于CORS的端点配置,默认情况下是禁用的,通过以下配置打开 endpoints.cors.allowed-origins=http://www.xxx.com endpoints.cors.allowed-methods=GET,POST,PUT,DELETE 2. 添加@CrossOrigin注解来实现跨域 3. 方法配置 import org.springframework.context.annotation.Configuration; import org.springfr

分享下知心天气jsonp跨域访问的代码

var myWeather = (function(){ var funShun = "https://api.thinkpage.cn/v3/weather/now.json?location=Fushun&callback=showWeather&" return { el : {}, init : function(){ var that = this; $.extend(that.el,{ 'nowWeather' : $('.now-weather'), 'n