非简单请求 设置全局的跨域访问无效
设置注解的跨域访问 是对非简单请求有用的
但是 全局的跨域访问 对非简单请求无效
这是为什么呢?
正在回答
同学你好,非常抱歉老师之前没有正确理解同学的意思,导致之前的测试是有问题,只是测试了简单请求。
1、根据同学的描述,设置注解的跨域访问 是对非简单请求有用的。但是 全局的跨域访问 对非简单请求无效。请问同学设置的注解的跨域访问是如何设置的,
2、非简单请求的跨域:
对于非简单请求的跨源请求,浏览器会在真实请求发出前,增加一次 OPTION 请求,称为预检请求(preflightrequest)。预检请求将真实请求的信息,包括请求方法、自定义头字段、源信息添加到 HTTP 头信息字段中,询问服务器是否允许这样的操作
服务器收到请求时,需要分别对 Origin、Access-Control-Request-Method、Access-Control-Request-Headers 进行验证,验证通过后,会在返回 HTTP 头信息中添加:
HTTP/1.1 200 OKAccess-Control-Allow-Origin: http://www.test.com // 允许的域 Access-Control-Allow-Methods: GET, POST, PUT, DELETE // 允许的方法 Access-Control-Allow-Headers: X-Custom-Header // 允许的自定义字段 Access-Control-Allow-Credentials: true // 是否允许用户发送、处理 cookieAccess-Control-Max-Age: 172800 // 预检请求的有效期,单位为秒。有效期内,不需要发送预检请求,ps 48小时
当预检请求通过后,浏览器才会发送真实请求到服务器。这样就实现了跨域资源的请求访问。所以后端处理其实处理的就是这次预检请求。
如上所示,如果直接置注解的跨域访问,同样要处理预检请求,所以同学的注解的跨域访问是如何设置的呐,同学可以尝试贴出具体的内容。
其实同学现阶段可以不用过于深入研究这些内容,在springboot等内容中非简单的跨域请求会更好解决一些,比如直接实现WebMvcConfigurerAdapter的内容。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
- 参与学习 人
- 提交作业 323 份
- 解答问题 8263 个
本阶段将带你学习主流框架SSM,以及SpringBoot ,打通成为Java工程师的最后一公里!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星