目前项目结构是VUE做前端,后端采用微服务架构,在开发时前端需要跨域请求数据,通过CorsConfig配置解决了简单跨域请求需要。但当需要在请求的header中增加token信息时,出现了请求失败的情况,浏览器和后台均出现OPTIONS类型请求相关提示。

搜索资料后发现,在设置了header之后,浏览器在发送正式请求前,会先发送一个OPTIONS请求,(据资料)发送OPTIONS请求是为了验证正式请求的有效性,检查服务端是否支持正式请求类型(POST、GET 等),但不清楚服务端底层框架在默认情况下时怎么响应该请求的。而OPTIONS请求中不包含任何用户参数,导致ZUUL中的过滤类型为 pre 的过滤器中的用户校验失败,从而返回用户提示信息,就无法继续执行正式请求了。

有资料说需要服务端返回一个状态是200的响应,但测试直接返回status为200的响应并没有产生作用,浏览器端仍然会显示请求失败,并不会执行正式请求。

最终:

通过对过滤器过滤规则进行修改,在是否需要过滤方法体中,增加 如果请求类型为OPTIONS ,则不进行用户校验,直接跳过该过滤,由框架本身去响应该请求。代码如下:

@Component
public class AuthFilter extends ZuulFilter { ... /**
* pre:路由之前
* routing:路由之时
* post: 路由之后
* error:发送错误调用
*
* @return
*/
@Override
public String filterType() {
return "pre";
} .... @Override
public boolean shouldFilter() {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
if (request.getMethod().equals("OPTIONS")) {
return false;
}
return true;
} ... }

最新文章

  1. 返回顶部demo
  2. jquery ajax rest invoke
  3. WordPress无法连接MySQL数据库
  4. 多用less命令,不会输入h查看对应的详细文档
  5. c++基础(二):成员he派生类
  6. C#总结项目《影院售票系统》编写总结完结篇
  7. webdynpro MESSGAE
  8. android 多线程Thread,Runnable,Handler,AsyncTask
  9. YYHS-手机信号
  10. 整合X-Admin前端框架改造ABP
  11. fillder--修改返回数据
  12. Longest Palindrome 最长回文串问题
  13. SVG制作可爱小页面
  14. poj 2349 求最小生成树里面第m长的边
  15. Zookeeper 通知更新可靠吗? 解读源码找答案!
  16. 用JQuery 判断某个属性是否存在hasAttr的解决方法
  17. docker探索-docker私有仓库搭建(九)
  18. 题目1013:开门人和关门人(结构体自定义cmp排序)
  19. 【转】Android中获取应用程序(包)的信息-----PackageManager的使用(一)
  20. qt学习(二) buttong layout spinbox slider 示例

热门文章

  1. lombook安装以及在eclipse和idea上配置
  2. Struts2的核心——拦截器
  3. CF618F Double Knapsack 构造、抽屉原理
  4. django 之 stark组件
  5. 几种c++字符串split 函数实现的比较
  6. PS制作水火相溶特效文字图片
  7. mybatis源码分析(五)------------SQL的执行过程
  8. AI佳作解读系列(二)——目标检测AI算法集杂谈:R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3
  9. Kickstart 和 Cobbler ks.cfg文件详解
  10. C. Multi-Subject Competition 思维+前缀和+填表加减复杂度(复杂度计算错误)