首页 > 解决方案 > 微信 - 违反功能政策:本文档中不允许使用加速度计

问题描述

从我们在微信上使用的最后一个腾讯验证码 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 标头

谢谢

标签: angular6wechatwechat-auth

解决方案


在您的应用程序服务器中,您应该添加一个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响应标头下的标头来确保存在功能策略。


推荐阅读