首页 > 解决方案 > Azure 事件 Webhook 验证失败

问题描述

我正在尝试使用 Azure 事件验证 webhook。根据他们的文档,请求具有以下主体:

[
  {
    "id": "2d1781af-3a4c-4d7c-bd0c-e34b19da4e66",
    "topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "subject": "",
    "data": {
      "validationCode": "512d38b6-c7b8-40c8-89fe-f46f9e9622b6",
      "validationUrl": "https://rp-eastus2.eventgrid.azure.net:553/eventsubscriptions/estest/validate?id=512d38b6-c7b8-40c8-89fe-f46f9e9622b6&t=2018-04-26T20:30:54.4538837Z&apiVersion=2018-05-01-preview&token=1A1A1A1A"
    },
    "eventType": "Microsoft.EventGrid.SubscriptionValidationEvent",
    "eventTime": "2018-01-25T22:12:19.4556811Z",
    "metadataVersion": "1",
    "dataVersion": "1"
  }
]

应该返回:

{
  "validationResponse": "512d38b6-c7b8-40c8-89fe-f46f9e9622b6"
}

我已经与邮递员核实我的应用程序正是这样做的。这是一个片段:

const validationEventType = 'Microsoft.EventGrid.SubscriptionValidationEvent';
for (var events in req.body) {
const body = req.body[events];
// Validate the event-hook when the eventhook is created
if (body.data && body.eventType === validationEventType) {
    const code = body.data.validationCode;
    const resBody = { validationResponse: code };
    return res.status(200).json(resBody);
}

仍然当我尝试使用 Azure 验证它时,我收到以下错误消息:

https://.ngrok.io/v* 的 Webhook 验证握手失败/api/ /媒体工作。Http POST 请求返回 2XX 响应,响应正文为 {"validationResponse":"301549B7-E5A7-4D5B-9D35-8A4CAD6D9494"。当在响应正文中没有验证代码的情况下接受验证请求时,验证事件中包含的验证 url 上会出现 Http GET(10 分钟内)。用于故障排除*

任何想法可能导致此问题?

标签: expressazure-eventgrid

解决方案


我找到了解决方法,但是,我不完全确定错误是什么。我在我的请求中看到我有很多标头,例如set-cookieX-...移动路由器以不使用 cookie 解析器、护照 cors、头盔删除了很多 cookie,并使握手按预期工作。


推荐阅读