angular6 - 微信 - 违反功能政策:本文档中不允许使用加速度计
问题描述
从我们在微信上使用的最后一个腾讯验证码 API 的 Angular 应用程序中,此错误出现在 DevTools 控制台中(在桌面 - windows - Chrome webkit 上):
[违规] 违反功能政策:本文档中不允许使用加速度计。
不幸的是,没有更多的堆栈跟踪。
腾讯验证码似乎尝试通过 iframe 使用我们网站不允许的加速计浏览器 API。我们需要添加一个 HTTP 标头,例如“Feature-Policy : accelerometer ...”
https://developer.mozilla.org/en-US/docs/Web/API/Accelerometer
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Feature-Policy
我不知道我们应该在哪里添加这个 http 标头
谢谢
解决方案
在您的应用程序服务器中,您应该添加一个Feature-Policy
使用以下值之一调用的响应标头:
"accelerometer *"
"accelerometer 'self'"
"accelerometer 'src'"
您在以下提供的确切allowList
参数accelerometer
将取决于您的具体情况和要求(re. MDN docs - Feature-Policy: Syntax)。
在使用 Express 服务器的应用程序中,可以通过在中间件中添加以下行来设置响应标头:
response.set('Feature-Policy', "accelerometer 'self'"
例如
// app.js
import express from 'express';
import applyFeaturePolicyHeaderMiddleware from './apply-feature-policy-header-middleware';
const app = express();
app.use(
applyFeaturePolicyHeaderMiddleware
);
// apply-feature-policy-header-middleware.js
export default (request, response, next) => {
response.header('Feature-Policy', "accelerometer 'self'");
next();
}
然后,您可以通过在 DevTools Network 选项卡中检查页面文档的请求是否包含feature-policy
响应标头下的标头来确保存在功能策略。
推荐阅读
- hybris - 获取标准发货日期而不是两天发货日期
- flutter - 我没有获得 facebook 登录的电子邮件 ID 值,而是获得了 google 登录的电子邮件 ID 值
- postgresql - JOIN 查询的行估计
- java - 保存后日历的意图不会添加到日历中
- flutter - ImagePicker.platform 显示警告 - Flutter
- laravel - 本地化 Laravel 8 在服务器中不起作用
- flutter - 当我查看包含 YoutubePlayerController 的页面时,下一页停止工作
- iis - VisualSvn 服务器通过另一台计算机的 IIS 服务器
- javascript - Playwright - 如何获取 page.on('response') 承诺正文内容
- unity3d - 是否可以统一打开另一个 exe(例如命令提示符),例如自定义编辑器窗口中的内容?