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跨域问题相关推荐

  1. SpringMvc 跨域

    一.SpringMvc跨域支持 从Spring MVC 4.2 开始增加支持跨域访问 二.使用方法 1.某个方法支持跨域访问 在方法上增加@CrossOrigin注解,如下: Java代码   @Re ...

  2. springmvc 跨域访问

    springmvc 跨域访问 www.you.com 这是域名 192.136.23.130 这是地址值 用 域名 将 地址值 绑定 才能通过 域名访问 到这个地址值的服务器. 每个应用都会生成 域名 ...

  3. springmvc跨域(转)

    跨域资源共享 CORS 详解 原文链接:http://www.ruanyifeng.com/blog/2016/04/cors.html 作者: 阮一峰 日期: 2016年4月12日 CORS是一个W ...

  4. SpringMVC跨域上传图片出现的405错误及409错误解决方式

    第一步,创建两个web项目,创建项目如下所示: 其中fileupload_server用作图片服务器使用,day1021_springmvc用作上传图片的web项目使用. 第二步,分别将两个项目发布两 ...

  5. 跨域解决方案之CORS

    目录 1.什么叫做跨域请求 2.跨域调用测试 3.解决方案CORS跨域 (1)概述 (2)请求过程 (3)解决办法 (4)SpringMVC跨域注解 1.什么叫做跨域请求 跨域是指通过js在不同的域之 ...

  6. h5跨域访问图片_h5标签canvas关于getImageData跨域的问题

    h5标签canvas关于getImageData跨域的问题 在学习h5的时候,canvas标签中getImageData()报错:security error! 具体代码如下(chrome浏览器): ...

  7. SpringMvc+ajax实现文件跨域上传

    最近开始学习SpringMVC框架,在学习数据绑定的时候,发现可以使用@RequestParam注解绑定请求数据,实现了文件上传.但是如果一个项目是前后端分离的,前端系统向后端服务上传文件该怎么解决了 ...

  8. 【SpringMVC】与权限拦截器冲突导致的Cors跨域设置失效问题

    问题描述 前端域名FE.com向后端域名BE.com分别请求访问优惠券的列表和提交新增的优惠券,API设计所用的Method分别为Get和Post,结果为前一次访问成功而后一次访问失败.这两次请求都是 ...

  9. SpringMvc 3.x跨域+ajax请求

    一.Cors,实现Js跨域访问Tomcat下资源(步骤如下) web.xml配置 <filter> <filter-name>CorsFilter</filter-nam ...

最新文章

  1. 理解JSON对象:JSON.parse、 JSON.stringify
  2. SAP连接外部ORACLE数据库
  3. 你只管打开清华小姐姐总结的Python学习知识手册 ,剩下的交给「卧槽」
  4. 上传图片即时显示图片
  5. Android工程中R.java文件的重新生成——注意资源文件的错误
  6. devops最佳实践_DevOps最佳实践如何改善团队动力
  7. GB28181系统设计(三)-进程通信让python获取共享内存数据
  8. 紧急事态分析及处理方法
  9. ios 去掉底部状态栏,隐藏ios 9中的状态栏
  10. h3c Telnet配置实验
  11. tp5 自定义配置文件
  12. pb5.0-pb10.0各版本高速下载
  13. Chrome浏览器护眼插件
  14. 2022全新车型汽车配置参数数据库大全
  15. memcached 配置
  16. 【论文翻译】Mastering the game of Go with deep neural networks and tree search( 用深度神经网络和树搜索实现围棋游戏)
  17. 全排列、排列组合(去重区别)
  18. 深度相机:结构光、TOF、双目相机
  19. 小黄鸟抓包京东APPCK
  20. 解决苹果浏览器点击事件无法生效的问题

热门文章

  1. linux-shell命令之cp(copy)【拷贝复制】
  2. 欢迎使用CSDN-markdown编辑器test
  3. 安卓线程相关 HandlerThread Handler Thread Looper Message Runnable
  4. 低级键盘钩子 DLL
  5. 关闭文件夹或打印机共享服务器,局域网共享打印机好用,但文件夹不能访问
  6. sqlyong 删除数据能否撤回_数据结构知识点总结
  7. c语言最简单程序实例,C语言第一个简单实例
  8. linux升级ssh到6.6版本,CentOS6.5 openssh升级到openssh-7.6版本
  9. GPU Gems1 - 21 实时辉光(Real-Time Glow)
  10. [FY20 创新人才班 ASE] 第 1 次作业成绩