我们在控制器上使用带有@RestController注释的spring mvc,我们正在处理控制器中的授权.我们使用相同的代码来设置响应CORS飞行前请求的允许方法.为实现这一目标,我们有:

在调度程序servlet的配置中,然后我们有:

@RequestMapping(value="/some/collections",method=RequestMethod.OPTIONS)

public void collectionOptions(

HttpServletRequest req,HttpServletResponse res) {

List

我们还有一个拦截器,它对CORS pre-flight进行基本检查,以查看原点是否可能具有任何权限.

我们这样做主要是因为某些请求的权限实际上取决于@RequestParams,即:

OPTIONS /api/collections?userId=122

如果您具有管理权限,或者您实际上是具有ID 122的用户,则可能被允许.此外,我们还有API密钥

OPTIONS /api/collections?userId=122&apiKey=ABC

对于一个原点可能没问题,但对另一个原点则不行.

这工作正常,但是现在,Spring 4.2决定是否处理OPTIONS请求,通过调用:

CorsUtils.isCorsRequest(request);

在AbstractHandlerMapping中然后返回

HandlerInterceptor[] interceptors = chain.getInterceptors();

chain = new HandlerExecutionChain(new PreFlightHandler(config),interceptors);

而不是HandlerMethod ……

我们需要的是告诉spring让控制器处理OPTIONS请求的一些方法,无论预检请求处理程序是什么.

我们似乎无法找到一个点,我们可以告诉内置的CORS处理是安静的,或者在某个地方配置一些允许我们绕过新添加的代码的子类:

AbstractHandlerMapping.getHandler(HSR request)

这有可能吗?在我主动启用它之前(通过WebMvcConfigurerAdapter或通过@CrossOrigin注释),这样的功能是不是很安静?

——–编辑————-

HTTP标准说明了以下关于OPTIONS方法的内容:

OPTIONS方法表示请求有关Request-URI标识的请求/响应链上可用的通信选项的信息.该方法允许客户端确定与资源相关联的选项和/或要求,或服务器的能力,而不暗示资源动作或启动资源检索.

认为beyong只是CORS,我认为拦截CORS选项调用虽然相应的方法映射到控制器上是不正确的方法.是的,CORS是你可以用OPTIONS调用做的一件事.但它绝不是唯一的一个.

如果没有映射,并且如果使用不同的请求方法和@CrossOrigin注释映射处理程序方法,我希望触发内置CORS支持的假设会很好,但我不认为任何请求原始标头集应该只自动转到CORS处理程序.

java option请求_java – 如何说服spring 4.2将OPTIONS请求传递给控制器相关推荐

  1. java中的 请求体_在spring mvc test中访问请求体和请求头

    我创建了一个spring boot应用程序,这就是我的控制器的样子 . 我使用postman在请求体中发送json,在请求头中发送一个字符串,然后进一步散列json并将其与请求头获取的字符串进行比较 ...

  2. java option请求_面试官:说说你对 options 请求的理解

    什么是 options 请求 我们可以看下 MDN 中的一段描述: ★ HTTP 的 OPTIONS 方法 用于获取目的资源所支持的通信选项.客户端可以对特定的 URL 使用 OPTIONS 方法,也 ...

  3. java webmethod 参数_java详解Spring接收web请求参数的方式

    本篇文章给大家带来的内容是java详解Spring接收web请求参数的方式 .有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 1 查询参数 请求格式:url?参数1=值1&参 ...

  4. java的框架_java 三大框架——spring

    2.Sping架构 Spring框架是分模块存在,除了最核心的Spring Core Container(即Spring容器)是必要模块之外,其他模块都是可选,视需要而定. 官方文档Spring4.0 ...

  5. java option作用_java – 类Option [T]的意义是什么?

    如果你强迫自己永远不要使用get,你会得到Option的更好的点.这是因为get相当于"确定,送我回到空地". 所以,拿你的例子.你如何调用显示而不使用get?这里有一些替代方案: ...

  6. mc java 连接超时_Java进程CPU占用高导致的网页请求超时的故障排查

    一.发现问题的系统检查: 一个管理平台门户网页进统计页面提示请求超时,随进服务器操作系统检查load average超过4负载很大,PID为7163的进程占用到了800%多.  二.定位故障 根据这 ...

  7. java 切面 注解_Java自学之spring:使用注解进行面向切面编程(AOP)

    学习目的:学会使用注解进行面向切面编程(AOP),实现在面向切面编程(AOP)中,使用XML配置完成的操作. Part 1 修改cn.vaefun.dao.UserServiceImpl.java,在 ...

  8. java getbean方法_java相关:spring中通过ApplicationContext getBean获取注入对象的方法实例...

    java相关:spring中通过ApplicationContext getBean获取注入对象的方法实例 发布于 2020-12-19| 复制链接 分享一篇关于关于spring中通过Applicat ...

  9. java 分布式事务_Java核心知识 Spring原理十五 JPA 原理

    1. 事务 事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity ).一致性 ( Consistency ).隔离性 ( Isolation ) 和持久性 ( Dur ...

最新文章

  1. 黑客帝国「缸中之脑」有眉目了?培养皿中百万人脑细胞学会打乒乓球,仅用了5分钟...
  2. 《程序员的自我修养》
  3. 03-spring bean
  4. 软件使用 excel
  5. Java面试题2-附答案
  6. PyTorch教程(十一):多输出的感知机以及梯度
  7. 精简改良(生成树dp)
  8. 使用python进行数据清洗常用的库_python3常用的数据清洗方法(小结)
  9. GPS实验三:GPS接收机野外数据采集
  10. 在storm中使用定时保存
  11. java memcmp_C 库函数
  12. c语言1000行代码,【图片】【标题党】论我是如何一分钟写1000行代码的【c语言吧】_百度贴吧...
  13. js 基础总结(常用的反转)
  14. Html实现Excel模板下载
  15. 在ArcCatalog中建立空间数据库以及数据的编辑
  16. 软件工程实践—软件评测
  17. 注册页面获取手机验证码
  18. Pycharm Traceback (most recent call last):
  19. 依赖计算机英语作文,过度依赖电脑的英语作文
  20. 微淘客推广技巧,教你如何用微信公众号淘客引流技巧

热门文章

  1. 全新的Play模块资料库
  2. Linux 命令之 xargs -- 给其他命令传递参数的一个过滤器
  3. Linux 如何安装 SRPM 包(源代码 rpm 软件包,以 .src.rpm 为后缀名)/rpm 格式的源码软件包/源码包
  4. java获取文件夹 路径,Java获取文件的路径
  5. java编程九九乘法表_如何用JAVA语言编写一个九九乘法表
  6. 买了服务器之后如何操作系统,买了服务器之后如何操作系统
  7. windows运行linux脚本命令大全,查看和运行 Windows PowerShell 脚本
  8. python发送邮件outlook_通过Python发送Outlook电子邮件?
  9. scanf在c语言中的作用是什么?
  10. C/C++打造Windows岁月留声机