springmvc跨域問題

1、跨域問題:

按照網上所有的方法試了一遍,都沒跨過去,正在無助之際,使用filter按照下面的方法解決的時候出現了轉機:

添加filter:

package com.thc.bpm.filter;import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; public class CorsFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) servletResponse; HttpServletRequest request = (HttpServletRequest)servletRequest; String origin = request.getHeader("Origin"); response.setHeader("Access-Control-Allow-Origin", origin); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "Authentication"); response.setHeader("Access-Control-Allow-Credentials", "true"); String method = request.getMethod(); if(method.equalsIgnoreCase("OPTIONS")){ servletResponse.getOutputStream().write("Success".getBytes("utf-8")); }else{ filterChain.doFilter(servletRequest, servletResponse); } } @Override public void destroy() { } }

在web.xml配置田間上面的過濾器:

    <filter><filter-name>corsFilter</filter-name> <filter-class>com.thc.bpm.filter.CorsFilter</filter-class> </filter> <filter-mapping> <filter-name>corsFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

image

測試的時候發現報錯不一樣了:
image
主要是這句話:Request header field x-access-token is not allowed by Access-Control-Allow-Headers in preflight response
大致翻譯下意思是:請求頭中有個字段“x-access-token”,這個字段不被預運行響應中的Access-Control-Allow-Headers所允許。
我忽然想到我們的token就是放在x-access-token這個字段中,而過濾器中相關設置為:

response.setHeader("Access-Control-Allow-Headers", "Authentication");

那就把Authentication換成x-access-token試試:

response.setHeader("Access-Control-Allow-Headers", "x-access-token");

image
再測試一次:

image

2、總結cors常見的header:

Access-Control-Allow-Origin:?http://foo.org
Access-Control-Max-Age: 3628800
Access-Control-Allow-Methods: GET,PUT, DELETE
Access-Control-Allow-Headers: content-type

"Access-Control-Allow-Origin"表明它允許"http://foo.org"發起跨域請求;
"Access-Control-Max-Age"表明在3628800秒內,不需要再發送預檢驗請求,可以緩存該結果;
"Access-Control-Allow-Methods"表明它允許GET、PUT、DELETE的外域請求;
"Access-Control-Allow-Headers"表明它允許跨域請求包含content-type頭;

預檢請求用的方法是OPTIONS,表示這個請求是用來詢問的。關鍵字段是Origin,表示請求來自哪個源。
除了Origin之外,還有兩個特殊字段:
Access-Control-Request-Method:該字段是必須的,用來列出CORS請求會用到那些方法。
Access-Control-Request-Headers:該字段是一個逗號分隔的字符串,指定瀏覽器CORS請求會額外發送的頭信息字段。

轉載于:https://www.cnblogs.com/jiqiyoudu/p/10974810.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248796.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248796.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248796.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

柳傳志給年輕人的建議:比起過日子,更要奔日子

改革開放的 40 年&#xff0c;是柳傳志實現人生價值的 40 年。 十一屆三中全會后&#xff0c;伴隨“科學的春天”&#xff0c;迎著改革開放的大潮&#xff0c;柳傳志“下海”了。但他并沒想到&#xff0c;自己選擇的電腦行業&#xff0c;讓他和聯想集團站在了潮頭。 從 1984 年…

成功秀了一波scala spark ML邏輯斯蒂回歸

1、直接上官方代碼&#xff0c;調整過的&#xff0c;方可使用 package com.test import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.mllib.classification.{LogisticRegressionModel, LogisticRegressionWithLBFGS} import org.apache.spark.mllib.e…

記錄一次查詢log的經歷

一大早發現生產數據庫的基礎資料被刪除。 由于每天都做了差異備份&#xff0c;而且是基礎資料&#xff0c;這樣數據就不會擔心找不回來。 首先通過每天的差異本分文件進行查看數據丟失的大概時間&#xff0c;查到數據丟失是在17晚上備份過后18丟失的。 然后找18號的數據庫執行記…

移動端輪播圖

1. 頁面布局 1.1 頁面框架 <body><div class"box"><div class"tupian"><img src"4.webp" alt""><img src"1.webp" alt""><img src"2.webp" alt""><…

Boost 序列化

原文鏈接&#xff1a; https://blog.csdn.net/qq2399431200/article/details/45621921 1. 編譯器 gcc, boost 1.55 2.1第一個簡單的例子 —— Hello World &#xff0c;將字符串內容歸檔到文本文件中 #include <iostream>#include <fstream>#include <string>…

docker CE 的安裝

一、Docker CE的安裝1.先決條件運行環境&#xff1a;Ubuntu 64位或者其他支持Docker的64位系統運行配置&#xff0c;linux內核版本必須大于 3.10&#xff0c;否則會因為缺少容器運行所需的功能而出錯。 2.在ubuntu下安裝Docker CEUbuntu版本? Cosmic 18.10 ? Bionic 18.04 (…

nodeJS中的異步編程

nodejs 不是單線程 在博客項目中關于異步問題&#xff1a; 1.當用戶添加一條博客時 需要通過post方式向服務器發送數據 后臺獲取用戶以post方式拿到傳送過來的數據 然后存入數據庫&#xff1a; 上面的代碼&#xff1a;創建一個空字符串 當用戶向服務器發送請求時出發data事件將…

day01筆記

linux基本命令的學習&#xff1a; 1.查看主機名hostname 2.修改主機名hostnamectl set-hostname s16ds 3.linux命令提示符 [roots16ds ~]# # 超級用戶的身份提示符 $ 普通用戶的身份提示符4.修改命令提示符 PS1變量控制 [roots16ds ~]# echo $PS1 [\u\h \W]\$PS1[\u\h \w \t]…

angular 路由

1. vscode編輯器快速新建主路由&#xff1a; ng-router注意修改為 根路由為&#xff1a;‘forRoot()’app-route.module.ts;{ path:,redirectTo:/login,pathMatch:full } 當路由為空的時候&#xff0c;會重定向到/login路由&#xff0c;必須加上pathMatch:full 1 import { Rou…

nodeJs 操作數據庫

首先在node中下載mysql包 npm install mysql 連接數據庫 var mysql require(mysql); var con mysql.createConnection({host : localhost,user : root,password : root,database : blog });開啟鏈接 con.connect();執行增刪改查 不同功能創建不同的sql語句即可…

shell字體顏色應用

輸出特效格式控制&#xff1a; \033[0m 關閉所有屬性 \033[1m 設置高亮度 \03[4m 下劃線 \033[5m 閃爍 \033[7m 反顯 \033[8m 消隱 \033[30m -- \033[37m 設置前景色 \033[40m -- \033[47m 設置背景色 光標位置等的格式控制&#xff1a; …

Spring Boot 統一結果封裝

ResultVo, 返回結果對象 Data public class ResultVo<T> {private Integer code;private String message;private T data; }ResultVoUtil, 封裝返回結果 public class ResultVoUtil {public static<T> ResultVo<T> sucess(T data) {ResultVo<T> result…

總結面試題——Javascript

文章目錄1.閉包2.作用域鏈3.JavaScript的原型 原型鏈 有什么特點4.事件代理5.Javascript如何實現繼承6.this對象7.事件模型8.new操作符9.ajax原理10.解決跨域問題11.模塊化開發怎么做12.異步加載js的方式有哪些13.會造成內存泄漏的操作14.XML和JSON的區別15.webpack16.AMD和Com…

js實現替換指定字符后面的內容(包括指定字符)

href 223d啥啥啥d dds word sss 1233;var indexOf href.indexOf(word);len href.substring(indexOf,href.length);&#xff08;包括指定字符串&#xff09; var newHref href.replace(len,替換內容);轉載于:https://www.cnblogs.com/-lin/p/10172503.html

OAuth2.0 知多少

OAuth2.0 知多少 原文:OAuth2.0 知多少1. 引言 周末逛簡書&#xff0c;看了一篇寫的極好的文章&#xff0c;點擊大紅心點贊&#xff0c;就直接給我跳轉到登錄界面了&#xff0c;原來點贊是需要登錄的。 可是沒有我并沒有簡書賬號&#xff0c;一直使用的QQ的集成登錄。下面有一排…

五分鐘帶你摸透 Vue組件及組件通訊

一.組件化開發 組件 (Component) 是 Vue.js 強大的功能之一。組件可以擴展 HTML 元素&#xff0c;封裝可重用的代 碼。在較高層面上&#xff0c;組件是自定義元素&#xff0c;Vue.js 的編譯器為它添加特殊功能。在vue中都是組件化開發的&#xff0c;組件化開發就是把一個完整的…

Parameter 'userName' not found. Available parameters are [1, 0, param1, param2]

Mapper接口的方法的參數沒有加&#xff1a;Param("xxx")注解&#xff0c;或者是xxx寫不對轉載于:https://www.cnblogs.com/linliquan/p/10987136.html

微信公眾號開發-接入

一 首先實現內網穿透&#xff0c;公眾號需要連接我們的服務器&#xff0c;內外無法訪問&#xff0c;所以先實現自己的內網可以測試時連接外網&#xff0c;下載natapp&#xff0c;選擇windows&#xff0c;順便下載config,ini 配置文件。注冊好購買免費的隧道 然后將token寫入配置…

Vue 項目上線優化

上線項目的優化 優化上線項目&#xff0c;首先在上線打包時我們通過babel插件將console清除&#xff0c;當然對項目打包后的體積的影響是微乎其微&#xff0c;對項目的入口文件的改善也是很有必要的&#xff0c;因為在開發階段和上線如果我們使用的是同一入口文件&#xff0c;…

Python并發編程—進程

多任務編程 1.意義&#xff1a; 充分利用計算機多核資源&#xff0c;提高程序的運行效率。 2.實現方案 &#xff1a;多進程 &#xff0c; 多線程 3.并行與并發 并發 &#xff1a; 同時處理多個任務&#xff0c;內核在任務間不斷的切換達到好像多個任務被同時執行的效果&#xf…