[英]How to send Azure Cloud-2-Device message from web app
我正在尝试使用以下代码在Azure中调用直接方法:
function RebootPi() { $.ajax({ url: 'https://Dummy.azure-devices.net/twins/Dummy/methods?api-version=2018-06-30', type: 'POST', authorization: 'SharedAccessSignature sr=Dummy.azure-devices.net&sig=QsU2LS6BfOG5NvOfIcPWaJ01Og1rRBFKR1PRkFNVivY%3C&skn=iothubowner&se=1589177803', methodName: 'reboot', payload: '', responseTimeoutInSeconds: 15 // set response timeout as 15 seconds }); };
我可以使用Azure CLI和本地计算机上的curl成功调用该方法,因此SaS令牌可以。
当我在浏览器中调用该函数时,得到401(未授权)并被控制台中的CORS错误阻止:
jquery-3.4.0.min.js:2 POST https://dummy.azure-devices.net/twins/Dummy/methods?api-version=2018-06-30 401(未经授权)
从来源' https://dummy.azurewebsites.net '访问' https://dummy.azure-devices.net/twins/Dummy/methods?api-version=2018-06-30 '处的XMLHttpRequest已被阻止CORS政策:所请求的资源上没有“ Access-Control-Allow-Origin”标头。
我尝试使用通配符*和Web应用程序URL在Azure中配置CORS。
出于调试目的,我使用的插件在Chrome中禁用了跨来源功能,但仍然出现401错误。
经过漫长,有趣但又非常令人沮丧的旅程,我刚刚阅读了该主题。
azure-iot-hub通过浏览器端JavaScript获取消息
似乎暗示我不可能在Web应用程序中有一个调用直接方法的按钮。 这是因为CORS不包含必需的标头。
我对此很陌生,但我发现无法以某种方式完成此操作很奇怪。
我做错什么了吗?
这有可能吗,如果可以的话我应该怎么做?
任何建议都将不胜感激。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.