springCloud跨域配置

2021-08-28 13:38:40 字數 1862 閱讀 5042

在閘道器裡面加配置

package com.movitech.gateway.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 systemconfig

}

原理:

cors(跨域資源共享)

1, 簡介

cors是乙個w3c標準,全稱是"跨域資源共享"(cross-origin resource sharing)。它允許瀏覽器向跨源(協議 + 網域名稱 + 埠)伺服器,發出xmlhttprequest請求,從而克服了ajax只能同源使用的限制。

cors需要瀏覽器和伺服器同時支援。它的通訊過程,都是瀏覽器自動完成,不需要使用者參與。對於開發者來說,cors通訊與同源的ajax通訊沒有差別,**完全一樣。瀏覽器一旦發現ajax請求跨源,就會自動新增一些附加的頭資訊,有時還會多出一次附加的請求,但使用者不會有感覺。

因此,實現cors通訊的關鍵是伺服器。只要伺服器實現了cors介面,就可以跨源通訊。

2, 基本流程

瀏覽器將cors請求分成兩類:簡單請求(****** request)和非簡單請求(not-so-****** request)。

瀏覽器發出cors簡單請求,只需要在頭資訊之中增加乙個origin欄位。

瀏覽器發出cors非簡單請求,會在正式通訊之前,增加一次http查詢請求,稱為"預檢"請求(preflight)。瀏覽器先詢問伺服器,當前網頁所在的網域名稱是否在伺服器的許可名單之中,以及可以使用哪些http動詞和頭資訊字段。只有得到肯定答覆,瀏覽器才會發出正式的xmlhttprequest請求,否則就報錯。

3, 配置項解釋

3.1 access-control-allow-origin

該欄位必填。它的值要麼是請求時origin欄位的具體值,要麼是乙個*,表示接受任意網域名稱的請求。

3.2 access-control-allow-methods

該欄位必填。它的值是逗號分隔的乙個具體的字串或者*,表明伺服器支援的所有跨域請求的方法。注意,返回的是所有支援的方法,而不單是瀏覽器請求的那個方法。這是為了避免多次"預檢"請求。

3.3 access-control-expose-headers

3.3 該欄位可選。cors請求時,xmlhttprequest物件的getresponseheader()方法只能拿到6個基本字段:cache-control、content-language、content-type、expires、last-modified、pragma。如果想拿到其他字段,就必須在access-control-expose-headers裡面指定。

3.5 access-control-max-age

該欄位可選,用來指定本次預檢請求的有效期,單位為秒。在有效期間,不用發出另一條預檢請求。

注意: cors請求傳送cookie時,access-control-allow-origin只能是與請求網頁一致的網域名稱。同時,cookie依然遵循同源政策,只有用伺服器網域名稱設定的cookie才會上傳,其他網域名稱的cookie並不會上傳,且(跨源)原網頁**中的document.cookie也無法讀取伺服器網域名稱下的cookie。

微服務SpringCloud跨域問題

public class implements webmvcconfigurer 此處需要注意addallowedorigin上線應設定為前端位址 order bean public corsfilter corsfilter 因為在swagger和跨域同時出現時,如果發生options請求,swa...

springCloud專案解決跨域問題

通過 spring cloud gateway 實現,方式一 選擇在主啟動類中註冊corswebfilter類 1.允許cookies跨域 2.允許向該伺服器提交請求的uri,表示全部允許,在springmvc中,如果設成 會自動轉成當前請求頭中的origin 3.允許訪問的頭資訊,表示全部 4.預...

spring cloud 前端跨域問題的解決方案

解決方案一 在controller上新增 crossorigin註解 使用方式如下 crossorigin 註解方式 restcontroller public class handlerscancontroller origins public response handler requestbo...