Spring参数绑定(三)
之前写的能接受所有Content-Type参数的方法
可能会导致的问题
最近面前端 经常问面试者 有没有碰到过跨域然后怎么处理
突然想到一点
跨域这件事 都是浏览器在控制
如果 后端的所有参数都可以随意传递
那么原本是需要判断 跨域的复杂请求
就可以被前端以简单请求的方式去请求到
栗子
后端一个接口
只接收 JSON 参数 Content-Type 为 application/json
但是由于后端一般不会去写限制 Content-Type 的逻辑
一般就区分个 Get Post
JSON 参数 的接口 是复杂请求接口
本来如果被浏览器调用时需要判断跨域的
但是如果参数可以随意携带 后端也能获取到的话
前端可以用 multipart/form-data 或 application/x-www-http-urlencoded
将请求变成 简单请求 浏览器就不会发出 预检请求(OPTIONS请求)
怎么解决
如果可以的话 判断请求的 referer 必须是自己的网站就好了
end
大概这也就是 Spring 要区分 @RquestParam @RquestBody 的部分原因吧
不过如果是提供 API 给其它后端调用就无所谓了