1. 程式人生 > >SpringBoot解決cors跨域問題

SpringBoot解決cors跨域問題

1.使用@CrossOrigin註解實現

對單個介面配置CORS

@CrossOrigin(origins = {"*"})
    @PostMapping("/hello")
    @ResponseBody
    public ResultVO hello() {
        return new ResultVO(1,"成功");
    }

對某個Controller下的所有介面配置CORS

@CrossOrigin
@Controller
public class HelloController {

}

2.配置全域性的CORS

方法(1)新增配置類

package com.lzc.cors.config;

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.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
        return new CorsFilter(urlBasedCorsConfigurationSource);
    }
}

方法(2)新增配置類

package com.lzc.cors.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
                .maxAge(3600)
                .allowCredentials(true);
    }
}

方法(3)使用Filter方法,還需要在啟動類加上@ServletComponentScan註解

package com.lzc.cors.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebFilter(urlPatterns = "*")
public class CorsFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest)request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        httpResponse.setCharacterEncoding("UTF-8");
        httpResponse.setContentType("application/json; charset=utf-8");
        httpResponse.setHeader("Access-Control-Allow-Origin", "*");
        httpResponse.setHeader("Access-Control-Allow-Credentials", "true");
        httpResponse.setHeader("Access-Control-Allow-Methods", "*");
        httpResponse.setHeader("Access-Control-Allow-Headers", "Content-Type,Authorization");
        httpResponse.setHeader("Access-Control-Expose-Headers", "*");
        filterChain.doFilter(httpRequest, httpResponse);
    }

    @Override
    public void destroy() {

    }
}

相關推薦

SpringBoot解決CORS(@CrossOrigin)

一、關於跨域介紹 在前後分離的架構下,跨域問題難免會遇見比如,站點 http://domain-a.com 的某 HTML 頁面通過 的 src 請求 http://domain-b.com/image.jpg。網路上的許多頁面都會載入來自不同域的CSS樣式

SpringBoot解決cors問題

1.使用@CrossOrigin註解實現 對單個介面配置CORS @CrossOrigin(origins = {"*"}) @PostMapping("/hello") @ResponseBody public ResultVO hello()

Spring MVC 解決CORS問題

從4.2之後,Spring Framework可以解決跨域問題,開箱即用,下面是從官方文件總結了3種解決辦法。 利用@CrossOrigin註解,作用在Controller的類或方法上,可以指定origins、allowedHeaders、exposedHeaders、all

java配置springboot配置Cors

springboot配置Cors跨域、java最簡單配置跨域解決方案 aiprose 個人隨筆上線,網址 aiprose.com 點選訪問 現在前後分離已經是很常見的一種開發方式了,所以難免會遇到跨域問題,之前用的比較多的是jsonp(本人表示沒用過),之前

SpringBoot解決ajax問題(轉載)

一、第一種方式:1、編寫一個支援跨域請求的 Configurationimport org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.Co

SpringBoot解決ajax問題

一、第一種方式: 1、編寫一個支援跨域請求的 Configuration import org.springframework.context.annotation.Configuration; import org.springframework.web.servl

SpringBoot配置CORS訪問

SpringBoot配置CORS跨域訪問 新增依賴 <!--CORS只需要新增web依賴即可--> <dependency> <groupId>org.springframework.boot</groupId>

解決ajax的方法原理詳解之Cors方法

詳細 不同 htm 渲染 jsonp del 需要 methods href 1、神馬是跨域(Cross Domain) 對於端口和協議的不同,只能通過後臺來解決。 一句話:同一個ip、同一個網絡協議、同一個端口,三者都滿足就是同一個域,否則就是 跨域問題了。而為

CORS解決WebApi問題(轉)

域配置 routes efault pre action let tro img 搜索 CORS全稱Cross-Origin Resource Sharing,中文全稱跨域資源共享。它解決跨域問題的原理是通過向http的請求報文和響應報文裏面加入相應的標識告訴瀏覽器它能訪問

前端-關於CORS解決方案,面向服務端

red 瀏覽器 環境 和我 methods retrieve name 後臺 一件事 最近自己在寫後臺管理系統的時候,並沒有采用jsp、freemaker、葉子等模板技術,而是由後端提供數據api,前端通過AJAX和JQuery來動態操作頁面上的一些div、table元素,

解決ajax的辦法,代理,cors,jsonp

resource 通過 使用 -o 參考 acc log 方式 sha 1、使用php做代理去請求第三方api接口 php是可以跨域的,我們利用ajax請求本域名中的php文件,php再去請求第三方接口文件,從而達到跨域目的。 php做代理請求: aj

CORS 與 TP5中解決方案

在做專案過程中,使用Vue-element-admin作為前端,ThinkPHP5作為後端框架進行開發,會遭遇跨域問題,本文給出ThinkPHP5解決跨域 1.CORS的概念     CORS(Cross-Origin Resource Sharing 跨源資源共享),當

CORS解決ajax訪問問題---

/**  * 登入驗證  *   * @author ruoyi  */ @CrossOrigin(origins = "http://127.0.0.1:8020", maxAge = 36000) @Controller public

Shiro框架在CORS訪問中遇到的問題及解決

背景 最近做一個前後端分離的專案時,使用shiro做許可權管理時遇到跨域問題,這裡做一下記錄。   原因 後端通過Shiro配置URL過濾, shiroFilterFactoryBean.setLoginUrl("/unauth"); 預設對於沒有授權的訪問

CORS請求的限制和解決

我們模擬一個跨域的請求,一個是8888,一個是8887 //server.js const http = require('http'); const fs = require('fs'); http.createServer(function(req,res){   conso

解決ajax問題(2-2)cors

https://www.cnblogs.com/2017Python/articles/7942124.html Ajax——Cors實現跨域ajax  Cors實現跨域ajax,基本原理:客戶端不變,伺

解決ajax問題(2)cors

  http://www.cnblogs.com/sloong/p/cors.html CORS 跨域 實現思路及相關解決方案 本篇包括以下內容: CORS 定義 CORS 對比 JSONP CORS,BROWSER支援情況 主要用途 Ajax

SpringBoot rest-api+Vue CORS.md

跨域,指的是瀏覽器不能執行其他網站的指令碼。它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript施加的安全限制。 目前用到兩種方式 前後端統一通過代理轉發,使api和vue web都通過同一域名+埠來訪問,以確保同源; 通過服務端介面層配置,支援CORS請求; 服務層配置

java服務端解決js的問題 CORS資源共享) 的配置

nginx相容跨域上傳 相容情況: 各種新版本的ie10,firefox,opera,safari,chrome以及移動版safari和Android瀏覽器 ie9及一下版本請使用flash方式來相容 通過OPTIONS請求握手一次的方式實現跨根域傳送請求,需要服務端配置

CORS ———— 解決方案之二

其他跨域方案請看: 以下介紹CORS跨域解決方案 一、什麼是CORS? CORS (Corss-Orign Resource Sharing) 是W3C工作草案,是一份瀏覽器技術的規範。定義了跨域資源訪問時,瀏覽器和伺服器之間如何通訊,使用自定義的http頭部允