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.mzph.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…