postman请求原理

postman可以 提交post请求

不受浏览器跨域限制

这样是不是网站登录就可以在postman中登录了

怎么样给网站做限制

不能在这种调试接口的工具中提交

我是明白浏览器才有的跨域限制

对于其他接口的话 只要参数对了 就会提交成功 只要后端不做限制 前端做的都是没有用的

现在就是在想怎么样才能阻止跨浏览器请求 让他只能在本网站上请求

求大神多多建议几个方法

阅读 5.6k
4 个回答

做不到,你可以简单hash验证来做简单验证,如CSRF TOken等,但可以模拟,只是单纯的用postman就困难了

防止跨域是浏览器的一个安全策略而已,当你用postman的时候,自然就没有跨域的概念了,你何时见到C/S客户端有跨域的问题的.

http 请求本质上就是发送数据到指定的 url ,然后服务器接受这些数据,根据接收的数据返回数据.只要发送的数据是对的,那么就会返回数据.否则这个 api 就是有 bug 的.

而只要是数据,那就可以模仿.如果要防止这种情况的话,就是在提高模拟成本上去下功夫了.比如要求每次访问的时候,需要带一个动态的参数,这样postman是没法自动生成的,那每次别人要通过postman来调试的话,就需要去手动生成这么一个参数,这样一来就提高了调试的成本.如果还不够,可以在这个参数上去扩展,比如增加参数的生成难度,或者增加参数的生成数量之类的,比如每次计算这个参数,都需要去取localStorage里面的数据来运算,在增加调试的成本.

或者可以增加重定向,每次不是直接放回,而是返回一个重定向的 url ,数据都从这个 url 返回,这样每次调试就需要复制一次返回的重定向地址,在访问.还不行就在多加几次重定向,累死调试的人.还可以在重定向的时候,加上上面的参数需求.

当然这么做最多只是增加调试成本,而没法阻止.

或者对方干脆就是用fiddler,正常用浏览器访问,然后通过fiddler拦截,修改参数重新发送.

针对不同的情况有不一样的解决方案,你需要根据实际需要去考虑是不是真的要这么做.毕竟每增加一层都是在消耗成本和体验度的.

跨域是浏览器的限制,就算不能用postman,那我自己写个请求模拟登陆你一样阻止不了,虽然后端可以检查请求来源ip,但这些都可以通过设置代理,伪造的请求头来绕开,大多数情况下对应的成本和收益不成比例。
再说既然人家都能登陆了,你阻止它在postman中登陆有啥意义呢。

其一

POSTMAN 提交请求时默认会自动在提交的 User-Agent 中携带 POSTMAN 关键字,但是此值可以修改。

其次

就像开发API给 Android 或者 iOS 使用,这些也并不受跨域控制,你可以在自己的API里面加认证信息,来阻止未经授权的访问。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题