非简单请求 设置全局的跨域访问无效

非简单请求 设置全局的跨域访问无效


http://img1.sycdn.imooc.com//climg/5ea6e07508b7f90812770141.jpg

http://img1.sycdn.imooc.com//climg/5ea6e07b081b6ffc09880899.jpg
设置注解的跨域访问 是对非简单请求有用的
但是 全局的跨域访问 对非简单请求无效
这是为什么呢?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,非常抱歉老师之前没有正确理解同学的意思,导致之前的测试是有问题,只是测试了简单请求。

    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的内容。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

提问者 杋帆影 2020-04-29 10:20:41


http://img1.sycdn.imooc.com//climg/5ea8e430087f8dd713420258.jpg
cors 没有问题啊  有问题的话 简单请求不就也没用了吗

好帮手慕小班 2020-04-28 12:02:23

同学你好,检查同学的<mvc:cors>中的内容书写并没有错误,这里cors是红色字体是报错吗,有报错提示吗?

    老师测试是没有问题,可以正常访问,同学可以尝试重新启动再来试试。同学可以尝试将自己的代码贴出,老师来测试一下。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 杋帆影 #1
    cors 没有问题啊 有问题的话 简单请求不就也没用了吗 简单请求是没问题的
    2020-04-29 10:21:07
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师