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>
测试的时候发现报错不一样了:
主要是这句话: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");
再测试一次:
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
springmvc跨域问题相关推荐
- SpringMvc 跨域
一.SpringMvc跨域支持 从Spring MVC 4.2 开始增加支持跨域访问 二.使用方法 1.某个方法支持跨域访问 在方法上增加@CrossOrigin注解,如下: Java代码 @Re ...
- springmvc 跨域访问
springmvc 跨域访问 www.you.com 这是域名 192.136.23.130 这是地址值 用 域名 将 地址值 绑定 才能通过 域名访问 到这个地址值的服务器. 每个应用都会生成 域名 ...
- springmvc跨域(转)
跨域资源共享 CORS 详解 原文链接:http://www.ruanyifeng.com/blog/2016/04/cors.html 作者: 阮一峰 日期: 2016年4月12日 CORS是一个W ...
- SpringMVC跨域上传图片出现的405错误及409错误解决方式
第一步,创建两个web项目,创建项目如下所示: 其中fileupload_server用作图片服务器使用,day1021_springmvc用作上传图片的web项目使用. 第二步,分别将两个项目发布两 ...
- 跨域解决方案之CORS
目录 1.什么叫做跨域请求 2.跨域调用测试 3.解决方案CORS跨域 (1)概述 (2)请求过程 (3)解决办法 (4)SpringMVC跨域注解 1.什么叫做跨域请求 跨域是指通过js在不同的域之 ...
- h5跨域访问图片_h5标签canvas关于getImageData跨域的问题
h5标签canvas关于getImageData跨域的问题 在学习h5的时候,canvas标签中getImageData()报错:security error! 具体代码如下(chrome浏览器): ...
- SpringMvc+ajax实现文件跨域上传
最近开始学习SpringMVC框架,在学习数据绑定的时候,发现可以使用@RequestParam注解绑定请求数据,实现了文件上传.但是如果一个项目是前后端分离的,前端系统向后端服务上传文件该怎么解决了 ...
- 【SpringMVC】与权限拦截器冲突导致的Cors跨域设置失效问题
问题描述 前端域名FE.com向后端域名BE.com分别请求访问优惠券的列表和提交新增的优惠券,API设计所用的Method分别为Get和Post,结果为前一次访问成功而后一次访问失败.这两次请求都是 ...
- SpringMvc 3.x跨域+ajax请求
一.Cors,实现Js跨域访问Tomcat下资源(步骤如下) web.xml配置 <filter> <filter-name>CorsFilter</filter-nam ...
最新文章
- 理解JSON对象:JSON.parse、 JSON.stringify
- SAP连接外部ORACLE数据库
- 你只管打开清华小姐姐总结的Python学习知识手册 ,剩下的交给「卧槽」
- 上传图片即时显示图片
- Android工程中R.java文件的重新生成——注意资源文件的错误
- devops最佳实践_DevOps最佳实践如何改善团队动力
- GB28181系统设计(三)-进程通信让python获取共享内存数据
- 紧急事态分析及处理方法
- ios 去掉底部状态栏,隐藏ios 9中的状态栏
- h3c Telnet配置实验
- tp5 自定义配置文件
- pb5.0-pb10.0各版本高速下载
- Chrome浏览器护眼插件
- 2022全新车型汽车配置参数数据库大全
- memcached 配置
- 【论文翻译】Mastering the game of Go with deep neural networks and tree search( 用深度神经网络和树搜索实现围棋游戏)
- 全排列、排列组合(去重区别)
- 深度相机:结构光、TOF、双目相机
- 小黄鸟抓包京东APPCK
- 解决苹果浏览器点击事件无法生效的问题
热门文章
- linux-shell命令之cp(copy)【拷贝复制】
- 欢迎使用CSDN-markdown编辑器test
- 安卓线程相关 HandlerThread Handler Thread Looper Message Runnable
- 低级键盘钩子 DLL
- 关闭文件夹或打印机共享服务器,局域网共享打印机好用,但文件夹不能访问
- sqlyong 删除数据能否撤回_数据结构知识点总结
- c语言最简单程序实例,C语言第一个简单实例
- linux升级ssh到6.6版本,CentOS6.5 openssh升级到openssh-7.6版本
- GPU Gems1 - 21 实时辉光(Real-Time Glow)
- [FY20 创新人才班 ASE] 第 1 次作业成绩