1. 程式人生 > >SpringBoot之跨域過濾器配置允許跨域訪問

SpringBoot之跨域過濾器配置允許跨域訪問

跨域請求

當一個資源從與該資源本身所在的伺服器不同的域或埠請求一個資源時,資源會發起一個跨域 HTTP 請求。

出於安全原因,瀏覽器限制從指令碼內發起的跨源HTTP請求。 例如,XMLHttpRequest和Fetch API遵循同源策略。 這意味著使用這些API的Web應用程式只能從載入應用程式的同一個域請求HTTP資源,除非使用CORS標頭檔案。

問題背景

如果前端提示”Access-Control-Allow-Origin”問題

XMLHttpRequest cannot load http://xxxxxxxxxx/. No 'Access-Control-Allow-Origin'
header is present on the requested resource. Origin 'null' is therefore not allowed access.

跨域過濾器

那麼需要再SpringBoot2配置跨域過濾器允許跨域訪問。

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import
javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component; @Component public class CorsFilter implements Filter { @Override public void
doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT, GET"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with"); chain.doFilter(req, res); } @Override public void init(FilterConfig filterConfig) {} @Override public void destroy() {} }

跨域功能改進

如果需要顯示跨域地址,還可以在裡面加上訪問來源列印語句,供排查

String curOrigin = request.getHeader("Origin");
System.out.println("###跨域過濾器->當前訪問來源->"+curOrigin+"###");  

如果需要跨域許可權,可以判斷一下來源

String curOrigin = request.getHeader("Origin");
System.out.println("###跨域過濾器->當前訪問來源->"+curOrigin+"###");  
if(curOrigin.indexOf("127.0.0.1:8080")>-1){
    response.setHeader("Access-Control-Allow-Origin", "*");
}

相關推薦

SpringBoot過濾器配置允許訪問

跨域請求 當一個資源從與該資源本身所在的伺服器不同的域或埠請求一個資源時,資源會發起一個跨域 HTTP 請求。 出於安全原因,瀏覽器限制從指令碼內發起的跨源HTTP請求。 例如,XMLHttpRequest和Fetch API遵循同源策略。 這意味著使用這些

springboot配置允許訪問

因springboot框架通常用於前後端分離專案,因此需配置後臺允許跨域訪問(具體看註釋),配置類如下,將該類加入工程中即可。 import org.springframework.context.annotation.Bean; import org.springframework.conte

springboot 過濾器配置

 新增maven包依賴 <dependency> <groupId>com.thetransactioncompany</groupId> <artifactId>cors-filter</artifactId>

node.js express配置允許

ati let pre char -h json requested all -c app.all(‘*‘, function(req, res, next) { res.header("Access-Control-Allow-Origin", "*");

django中配置允許請求

apps ons token middle red href clas cors nbsp 對於django 安裝django-cors-headers,詳情請看官方文檔 pip install django-cors-headers    配置settings.py

java過濾器配置

java程式碼 public class SimpleCorsFilter implements Filter { private static final Logger logger = LoggerFactory.getLogger(SimpleCorsFilter.class); @O

nginx配置允許訪問

1、對外提供的查詢訂單資訊介面需要支援跨域訪問: if ($http_origin ~* ((http|https)?://.*\.aa\.(com|hk)$)) { add_header 'Ac

springboot自定義過濾器

1.public class Logfilter implements Filter{ private Logger logger= LoggerFactory.getLogger(Logfilter.class); @Override public void init(FilterCo

Springboot 靜態資源路徑配置

在Springboot中預設的靜態資源路徑有:classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,從這裡可以看出這裡的靜態資源路徑都是在classpath中(也就是在專案路徑下指

SpringBoot載入自定義配置檔案

SpringBoot預設載入配置檔名為:application.properties和application.yml,如果需要使用自定義的配置檔案,則通過@PropertySource註解指定。   JavaBean: package org.springboot.model; imp

3.Springboot 檔案結構和配置檔案

專案檔案結構 新建的Springboot專案的檔案結構如下: |-customer(專案名稱) | - src | | - main | | | - java | | | - resources | | | | - static |

springboot旅第二篇-配置

根據 wid 使用 這也 dev 很多 本地 優先級 意思 一、引言 雖然springboot幫我們進行了自動配置,但配置還是不可避免的,比如最簡單的端口號,數據庫連接。但springboot的配置一般不用xml進行配置,而是yml和properties,選擇他們當然是因

SQLServer 2008R2 配置允許外網訪問

  1 介紹  因為業務需要,需要網際網路訪問資料庫。之前一直在做網站,做網站的話 是在伺服器上執行,連線本地資料庫即可。配置過程中遇到一些坑,所以暫時記下來 ,有需要再改。 2 配置 (1)環境       Sql Server 2008R2,確保可通過sa進行登入

Spring CloudGateway(四):TLS/SSL、配置訪問配置、執行器API、開發人員指南及MVC或Webflux搭建Gateway

版本:2.0.2.RELEASE 連結:http://spring.io/projects/spring-cloud-gateway#overview   本章主要目錄如下: Spring Cloud GatewayTLS/SSL是什麼? Spring Cloud

springboot請求配置

       當它請求的一個資源是從一個與它本身提供的第一個資源的不同的域名時,一個資源會發起一個跨域HTTP請求(Cross-site HTTP request)。        跨域並非瀏覽器限制了發起跨站請求,

Nginx允許訪問配置問題

如今前後端分離的模式,越來越成為很多團隊的選擇,通過分離前後端的工作,是的雙方更能關注於自己核心的工作領域,只需要通過相應的API介面進行互動。 前後端工作的分離帶來的一個問題就是前後端在部署上分離的可能性,在部署上的分離又會觸發瀏覽器安全機制——同源策略,從而導致不能訪

我也說說Nginx解決前端問題,正確的Nginx配置(後端Nginx CORS配置、CORS設定,後端允許請求)

最近連續兩個朋友問我跨域相關問題,我猜想可能不少朋友也遇到類似問題,我打算寫個部落格聊一下我實際使用的配置, 先說明一下,我並不太瞭解這配置,沒精力去了解太多,但我覺得其中有一些關鍵的小注意點,可能有些初學者不太注意到,導致配置有問題,本文章可能只對新手有點幫助,如果你有好

nginx配置靜態資源允許訪問

在server模組中新增配置: add_header 'Access-Control-Allow-Origin' '*'; 例: server { listen

java配置springboot配置Cors

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

SpringBoot 中設定允許請求

一、前言 現在在團隊做的專案都是前後端分離的,藉助 swagger 進行前後端合作 ① 後臺負責寫資料處理的介面 ② 前臺負責解析 JSON、設計介面 要實現介面可以給前端訪問,還要設定允許跨域訪問介面,正式本文的重點 前後端分離優缺點: