前端请求被IPS拦截了怎么办?
最近在开发一个Vue项目,调用后端接口时总是返回403,运维说是因为IPS检测到“可疑行为”给拦了。但我只是正常发了个POST请求,参数也没啥特别的,这咋排查啊?
我试过把请求体简化成最基础的数据,还是被拦。是不是因为用了axios的默认配置触发了什么规则?下面是我的组件代码:
<template>
<button @click="submit">提交</button>
</template>
<script>
export default {
methods: {
async submit() {
await this.$http.post('/api/report', {
action: 'save',
data: 'user input content'
});
}
}
}
</script>
几个排查方向:
1. 先确认是不是请求头的问题
axios默认的User-Agent比较简单,有些IPS会认为是爬虫。可以在axios全局配置里加一下:
2. 检查Content-Type
你用的是默认的application/json,试试改成 application/x-www-form-urlencoded 看看能不能过。不过改完后台接收参数的方式也得跟着变。
3. 看看是不是data里的内容触发了规则
你代码里传的
'user input content'如果包含 select、insert、delete、union 这些SQL关键词,IPS很容易直接拦截。可以先把data简化成纯数字测试一下。4. 最直接的办法:问运维
让运维查一下IPS的日志,看具体是触发了哪条规则、拦截的关键字是什么。这样排查比瞎猜快多了。
5. 临时方案:走代理
本地开发的时候把请求代理到后端服务,绕过IPS,等于确认是不是前端的问题。
大概率是第3点,你那个data里但凡有点敏感词就挂了。先让运维看日志确认一下触发的具体规则。