Microsoft Graph 工具包的跨站点问题
Cross site issue with Microsoft Graph Toolkit
我正在关注 this tutorial 创建一个使用 Microsoft 365 登录的简单 Web 应用程序。我目前在本地调试时遇到此错误 (http://localhost:8080):
警告:
mgt-loader.js:61 A parser-blocking, cross site (i.e. different eTLD+1) script, https://unpkg.com/@microsoft/mgt/dist/bundle/wc/webcomponents-loader.js, is invoked via document.write. The network request for this script MAY be blocked by the browser in this or a future page load due to poor network connectivity. If blocked in this page load, it will be confirmed in a subsequent console message. See https://www.chromestatus.com/feature/5718547946799104 for more details.
在 Azure 中,我将重定向 URI 设置为匹配 (http://localhost:8080)。
谷歌搜索后,我尝试添加 async
,但随后收到此警告并且没有出现登录按钮:
mgt-loader.js:61 Failed to execute 'write' on 'Document': It isn't possible to write into a document from an asynchronously-loaded external script unless it is explicitly opened.
什么会导致此警告,我该如何解决?
首先,查看 document.write
的工作原理:https://developer.mozilla.org/en-US/docs/Web/API/Document/write
您将理解为什么您不能在异步上下文中 运行 document.write
(在任何页面的控制台中尝试 运行ning document.write('Hello world!');
)。
警告告诉您,如果某人的互联网连接不稳定或不良,将来 Chrome 可能会阻止解析器阻止(同步)跨站点(与网站不来自同一域)脚本。
如果你想让它在没有警告的情况下同步 运行,你必须将该 JS 代码与你自己的代码捆绑在一起,或者只从你自己的来源提供它,就像你的网站一样(例如 localhost:8080
).您可以下载 @microsoft/mgt
npm 包并进行捆绑 - 使用 gulp、webpack 或您选择的其他工具。
https://unpkg.com/@microsoft/mgt@2.4.0/dist/bundle/wc/webcomponents-loader.js
此脚本尝试区分异步和同步上下文(第 175 行)和 运行 document.appendChild
(而不是 write
)用于异步上下文 - 但由于某种原因检查失败(readyState === loading
).
https://developer.mozilla.org/en-US/docs/Web/API/Document/readyState
如果你想运行以non-blocking的方式,你可以尝试自己修复脚本。
该工具包有一个 Github 回购协议 (https://www.npmjs.com/package/@microsoft/mgt),但没有关于异步加载的问题,也没有关于您注意到的警告的问题 - 所以可能没有其他人注意到或还没想好。
我正在关注 this tutorial 创建一个使用 Microsoft 365 登录的简单 Web 应用程序。我目前在本地调试时遇到此错误 (http://localhost:8080):
警告:
mgt-loader.js:61 A parser-blocking, cross site (i.e. different eTLD+1) script, https://unpkg.com/@microsoft/mgt/dist/bundle/wc/webcomponents-loader.js, is invoked via document.write. The network request for this script MAY be blocked by the browser in this or a future page load due to poor network connectivity. If blocked in this page load, it will be confirmed in a subsequent console message. See https://www.chromestatus.com/feature/5718547946799104 for more details.
在 Azure 中,我将重定向 URI 设置为匹配 (http://localhost:8080)。
谷歌搜索后,我尝试添加 async
,但随后收到此警告并且没有出现登录按钮:
mgt-loader.js:61 Failed to execute 'write' on 'Document': It isn't possible to write into a document from an asynchronously-loaded external script unless it is explicitly opened.
什么会导致此警告,我该如何解决?
首先,查看 document.write
的工作原理:https://developer.mozilla.org/en-US/docs/Web/API/Document/write
您将理解为什么您不能在异步上下文中 运行 document.write
(在任何页面的控制台中尝试 运行ning document.write('Hello world!');
)。
警告告诉您,如果某人的互联网连接不稳定或不良,将来 Chrome 可能会阻止解析器阻止(同步)跨站点(与网站不来自同一域)脚本。
如果你想让它在没有警告的情况下同步 运行,你必须将该 JS 代码与你自己的代码捆绑在一起,或者只从你自己的来源提供它,就像你的网站一样(例如 localhost:8080
).您可以下载 @microsoft/mgt
npm 包并进行捆绑 - 使用 gulp、webpack 或您选择的其他工具。
https://unpkg.com/@microsoft/mgt@2.4.0/dist/bundle/wc/webcomponents-loader.js
此脚本尝试区分异步和同步上下文(第 175 行)和 运行 document.appendChild
(而不是 write
)用于异步上下文 - 但由于某种原因检查失败(readyState === loading
).
https://developer.mozilla.org/en-US/docs/Web/API/Document/readyState
如果你想运行以non-blocking的方式,你可以尝试自己修复脚本。
该工具包有一个 Github 回购协议 (https://www.npmjs.com/package/@microsoft/mgt),但没有关于异步加载的问题,也没有关于您注意到的警告的问题 - 所以可能没有其他人注意到或还没想好。