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 给其它后端调用就无所谓了