首页 > 解决方案 > POST 请求 - 检测到 406 安全事件

问题描述

我试图通过在 POST 请求中提交表单值来从 URL 获取计划。为此,我在 node-red 中创建了一个流,它运行了几个星期。但是,现在我开始收到以下安全错误。

406 检测到安全事件

406 检测到安全事件

您的请求已被阻止。请稍后再试。


XrxWwwzlK-WmpFeEbGejEwAAAEo - www.islamiskaforbundet.se - xxx.xxx.xxx.xxx

有趣的是,当我将参数放入 REST 开发工具(例如PostmanOpen RESTED)并发布请求时,我得到的数据没有任何问题。

下面是 Postman 生成的 CURL 请求:

curl -X POST \
  https://www.islamiskaforbundet.se/wp-content/plugins/bonetider/Bonetider_Widget.php \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/x-www-form-urlencoded' \
  -H 'postman-token: eb701a0e-406e-4851-653f-2b7818c7d455' \
  -d 'ifis_bonetider_widget_city=G%C3%B6teborg%2C%20SE&ifis_bonetider_widget_date=2020-05-14'

执行后,它在终端中失败。

有人可能会说服务器可能已经知道了我的 IP 地址并开始阻止所有传入的请求,但是为什么相同的请求在上述工具的 UI 中可以正常工作,但在 CURL 或我的节点红色流中却不行?

有什么我想念的吗?或者如何避免这个安全错误?

标签: securitycurlpostnode-redhttp-status-code-406

解决方案


另一端的服务器有多种方法来识别发出请求的客户端,但最有可能的是它正在查看来自发出请求的客户端的用户代理字符串。

例如,您可以通过添加 Firefox 用户代理标头来使 curl 命令工作:

curl -X POST   https://www.islamiskaforbundet.se/wp-content/plugins/bonetider/Bonetider_Widget.php  \
-A "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0" \
-H 'cache-control: no-cache' \
-H 'content-type: application/x-www-form-urlencoded' \
-d 'ifis_bonetider_widget_city=G%C3%B6teborg%2C%20SE&ifis_bonetider_widget_date=2020-05-14'

(我还删除了邮递员令牌)

此外406可能是服务器返回的错误错误,错误文本的更好匹配将类似于429


推荐阅读