如何手动验证不含validationUrl的Azure EventGrid订阅请求?
Azure Event Grid订阅验证:只有validationCode无validationUrl的解决办法
我之前测试Event Grid的时候也踩过这个坑,当时看着文档找validationUrl找半天,结果发现是用另一种验证逻辑,咱们一步步来搞定:
首先得明确:Azure Event Grid的订阅验证有两种常见模式,你遇到的是POST请求验证模式,而不是文档里提到的带validationUrl的GET模式。
具体验证步骤:
- 第一步:确认你收到的是POST类型的验证请求,请求体的
data数组里会包含validationCode字段(比如类似"validationCode": "XYZ123abc"这样的内容)。 - 第二步:构造一个符合要求的响应返回给Event Grid:
- HTTP状态码必须是
200 OK - 响应体是JSON格式,要包含
validationResponse字段,值就是你收到的那个validationCode
- HTTP状态码必须是
- 举个实际的响应示例:
{ "validationResponse": "XYZ123abc" } - 第三步:把这个响应发送回Event Grid的验证请求,完成后你的订阅就会被激活,后续就能正常接收Event Grid推送的事件了。
为什么会出现这种情况?
当你创建Web Hook类型的Event Grid订阅时,Event Grid默认可能会触发POST验证模式(而非GET模式),这时候就不会返回validationUrl,而是需要你通过返回validationCode来完成订阅身份验证。
内容的提问来源于stack exchange,提问作者Gavin Hill
相关产品推荐
相关产品推荐

