开发上的小总结

@RequsetBody总结

spring boot 中使用 @RequestBody 注解的时候,如果你需要传入的是一个普通类型的数据时,直接传值即可不需要构造对象。

Long[] args 那么前端直接传入JSON数据[args1,args2,...] 到接口(无需命名)。又如Long arg 直接传入arg 即可,就是一个数字,无需根据参数名封装对应的数据。

如果需要加入名字的需要通过Java对象进行封装传参。并且@RequsetBody 无法指定参数名传参。

浏览器处理跨域的具体流程

浏览器处理跨域方式

跨域访问接口的时候浏览器是会去访问接口的,但是由于跨域的影响,返回来的数据无法被前端获取。

通过后端的解决方式

需要后端响应数据的时候,需要加入下面的响应头数据

Access-Control-Allow-Origin:获取请求头的Origin
Access-Control-Allow-Credentials:true
Access-Control-Allow-Methods:POST, GET, PATCH, DELETE, PUT
Access-Control-Max-Age:3600
Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept

注意:一定要在进入后端流程前设置(一般在拦截器上),设置过于靠后可能被忽略(如过不了拦截器)而没有设置上。

原理(流程)本质是同源策略

浏览器是通过服务器端的响应头来开放跨域的。要想成功跨域,就需要在响应数据前设置上面那些响应头;告诉浏览器你接受跨域访问。浏览器就会将访问到的数据返回给前端处理;否则不将数据给前端。

注意:浏览器不管你跨域不跨域,都会访问对应的服务器端接口,最终要不要将后端返回的数据给前端处理取决于后端接不接受跨域访问(即是否设置了对应的响应头)

同源策略:非授权下,不同源的双方都无法读取对方的数据。

建议

不是在非常必要的时候,绝不接受跨域访问。

 

扫描二维码关注公众号,回复: 6854641 查看本文章

猜你喜欢

转载自www.cnblogs.com/math-and-it/p/11236168.html
今日推荐