Directline对于Azure Bot Services没有响应,并被CORS策略阻止
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Directline对于Azure Bot Services没有响应,并被CORS策略阻止相关的知识,希望对你有一定的参考价值。
我已经使用Microsoft Sample for Bot Services的Bot Services sample。
我调试后,网页未显示任何内容。这是我的源代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Web Chat: Minimal bundle with Markdown</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script src="https://cdn.botframework.com/botframework-webchat/latest/webchat-minimal.js"></script>
<style>
html,
body
height: 100%;
body
margin: 0;
#webchat
height: 100%;
width: 100%;
</style>
</head>
<body>
<div id="webchat" role="main"></div>
<script>
(async function()
const res = await fetch('https://csharpbotdw.azurewebsites.net/directline/token', method: 'POST' );
const token = await res.json();
const markdownIt = window.markdownit();
window.WebChat.renderWebChat(
directLine: window.WebChat.createDirectLine( token )
,
document.getElementById('webchat')
);
document.querySelector('#webchat > *').focus();
)().catch(err => console.error(err));
</script>
</body>
</html>
我只看到错误提示
Access to fetch at 'https://csharpbotdw.azurewebsites.net/directline/token' from origin 'http://localhost:63191' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled. [http://localhost:63191/Test13122019]
答案
您必须在运行csharpbotdw服务的应用程序服务的CORS菜单中的批准来源列表中添加呼叫域。
另一答案
显然,您的Azure应用服务在托管代码的Azure应用服务的CORS设置中未正确配置CORS。我通过详细的步骤here解决了类似的问题,请尝试一下是否对您有帮助。
以上是关于Directline对于Azure Bot Services没有响应,并被CORS策略阻止的主要内容,如果未能解决你的问题,请参考以下文章
使用 Azure 或 App Studio 将 Bot 部署到 MS Teams?
Bot c# 回退到模拟 OAuth 令牌 + directline/conversations/<conversationId>/activities
Microsoft bot 框架 - Bot 频道注册。无法将录制的视频从 Skype 保存到 Azure 存储帐户