小编Atl*_*ila的帖子

自定义 Boom 错误消息

在我的 Hapi.js 服务器上,如果帐户没有访问 api 端点的权限,我想发送特定消息。我现在收到的 Boom 消息如下所示:

return reply(Boom.unauthorized("unauthorized access to this API."));
Run Code Online (Sandbox Code Playgroud)

这将返回一条如下所示的消息:

{
  "statusCode": 401,
  "error": "Unauthorized",
  "message": "unauthorized access to this API."
}
Run Code Online (Sandbox Code Playgroud)

我想让它看起来更像这样:

{
  "success": false,
  "message": "unauthorized access to this API.",
  "csrf-decorator": "",
  "redirect": ""
}
Run Code Online (Sandbox Code Playgroud)

我们是否有权自定义 Boom 错误消息?

谢谢!

javascript node.js hapi.js

5
推荐指数
1
解决办法
6970
查看次数

如何使用window.postmessage与父窗口通信

我正在创建一个反应应用程序,我希望我的用户将其嵌入到他们的网站上。该应用程序将显示在两个 iframe 中,但我只想一次只显示一个 iframe。因此,应用程序的一部分是一个简单的按钮,第二部分是用户决定使用该应用程序后弹出的表单(它是一个聊天应用程序)。

我设置了一个非常简单的组件来显示按钮,以便它可以向父网站发送消息。我不确定我做错了什么,但是当发送 window.postmessage 事件时,我收到错误:

Uncaught DOMException: Blocked a frame with origin "http://localhost:3002" from accessing a cross-origin frame.

这是父网站代码示例:

<h1>Hello! This is some static content</h1>
    <iframe src="http://localhost:3002"
        style="width: 108px; height: 50px; padding: 0px; margin: 10px 20px; position: fixed; bottom: 0px; right: 0px; overflow: visible; opacity: 1; border: 0px; z-index: 999998; transition-duration: 250ms; transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); transition-property: opacity, top, bottom;"
        id="dbhchat"></iframe>
    <h3>Thanks for checking out my blog!</h3>
    <script>
        window.addEventListener('message', event => {
            // IMPORTANT: check the origin …
Run Code Online (Sandbox Code Playgroud)

javascript postmessage reactjs

5
推荐指数
1
解决办法
2万
查看次数

如何在Reactjs中重播CSS3动画

我已经在css文件中设置了动画:

 @-webkit-keyframes jello-horizontal{
    0%{
        -webkit-transform:scale3d(1,1,1);
        transform:scale3d(1,1,1)
    }
    30%{
        -webkit-transform:scale3d(1.25,.75,1);
        transform:scale3d(1.25,.75,1)
    }
    40%{
        -webkit-transform:scale3d(.75,1.25,1);
        transform:scale3d(.75,1.25,1)
    }
    50%{
        -webkit-transform:scale3d(1.15,.85,1);
        transform:scale3d(1.15,.85,1)
    }
    65%{
        -webkit-transform:scale3d(.95,1.05,1);
        transform:scale3d(.95,1.05,1)
    }
    75%{
        -webkit-transform:scale3d(1.05,.95,1);
        transform:scale3d(1.05,.95,1)
    }
    100%{
        -webkit-transform:scale3d(1,1,1);
        transform:scale3d(1,1,1)
    }
}
@keyframes jello-horizontal{
    0%{
        -webkit-transform:scale3d(1,1,1);
        transform:scale3d(1,1,1)
    }
    30%{
        -webkit-transform:scale3d(1.25,.75,1);
        transform:scale3d(1.25,.75,1)
    }
    40%{
        -webkit-transform:scale3d(.75,1.25,1);
        transform:scale3d(.75,1.25,1)
    }
    50%{
        -webkit-transform:scale3d(1.15,.85,1);
        transform:scale3d(1.15,.85,1)
    }
    65%{
        -webkit-transform:scale3d(.95,1.05,1);
        transform:scale3d(.95,1.05,1)
    }
    75%{
        -webkit-transform:scale3d(1.05,.95,1);
        transform:scale3d(1.05,.95,1)
    }
    100%{
        -webkit-transform:scale3d(1,1,1);
        transform:scale3d(1,1,1)
    }
}
 .jello-horizontal{
    -webkit-animation:jello-horizontal .9s both;
    animation:jello-horizontal .9s both
}
Run Code Online (Sandbox Code Playgroud)

首次加载mycomponent时,它可以完美工作,但是每次单击特定按钮时如何使我的组件加载?

我的组件非常复杂,可以在此处添加代码,但是我认为这不是必需的,因为我只需要一个示例,说明如何在单击按钮时触发动画。不知道这是否有可能。我单击的按钮将更新状态,这是该组件的简化版本的示例:

import React, {Component} from 'react';

export class …
Run Code Online (Sandbox Code Playgroud)

javascript css3 css-animations reactjs

4
推荐指数
1
解决办法
1181
查看次数

将 crypto hmac 转换为 crypto-js hmac 字符串

我正在尝试转换一个秘密的 hmac 字符串,以允许我在邮递员中测试我的 api。Postman 预装了 cryptojs。这是我在测试服务器上使用加密的过程:

const crypto = require('crypto');
const generateHmac = (privateKey, ts) => {
    const hmac = crypto.createHmac('sha256', privateKey);
    hmac.update(ts);
    const signature = hmac.digest('hex');
    return signature;
}
Run Code Online (Sandbox Code Playgroud)

这与 postman 中使用 cryptojs 生成的字符串不匹配:

const createHmacString = (privateKey, ts) => {
    const hmac = CryptoJS.HmacSHA256(ts, privateKey).toString(CryptoJS.enc.Hex)
    return hmac;
}
Run Code Online (Sandbox Code Playgroud)

不知道我在这里做错了什么。提前致谢!

javascript encryption hmac node.js postman-pre-request-script

3
推荐指数
1
解决办法
2909
查看次数

改进HTML标记

我接受了测试,那个人刚才说:

改进html

<div class="header"></div>
<div class="main"></div>
<div class="footer"></div>
Run Code Online (Sandbox Code Playgroud)

所有我能想到的是使用HTML5 <header>,<section>以及<footer>标签,但我没有反应,就他如何喜欢它是没有反馈改进.

除了标签之外还有什么可以改进 HTML的吗?

html html5

1
推荐指数
1
解决办法
91
查看次数

我需要帮助来获取字符串的前n个字符(直到数字字符开始)

我正在使用一个字符串,在这里我需要提取前n个字符,直到数字开始。这样做的最佳方法是什么,因为有时字符串以数字开头:7EUSA8889er898我将需要提取,7EUSA但其他字符串示例将是SWFX74849948,我需要SWFX从该字符串中提取。

不知道如何使用正则表达式执行此操作,我的有限知识在这一点上阻止了我:

^(\w{4})只是获得了我的前四个字符,但是我并没有真正的停顿点,因为有时字符串可能somelongstring292894830982会要求我somelongstring

javascript regex

1
推荐指数
1
解决办法
81
查看次数

如何使用 Node.js 将 blob base64 字符串上传到谷歌云存储

我正在构建一个应用程序,它允许我从访问网络摄像头的 React 应用程序中拍照,然后我需要使用 Hapi node.js 服务器将图像上传到谷歌云存储。我遇到的问题是,反应应用程序拍摄一张图片并给我这个 blob 字符串(我实际上什至不知道这是否是它的名字)但是该字符串非常大,看起来像这样(我已经缩短了它)由于它的尺寸非常大:

"imageBlob": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/...
Run Code Online (Sandbox Code Playgroud)

我发现很难找到向我展示如何准确执行此操作的资源,我需要上传该 blob 文件并将其保存到谷歌云存储桶中。

到目前为止,我的应用程序中有这个:

Item.postImageToStorage = async (request, h) => {
  const image = request.payload.imageBlob;
  const projectId = 'my-project-id'
  const keyFilename = 'path-to-my-file'
  const gc = new Storage({
    projectId: projectId,
    keyFilename: keyFilename
  })

  const bucket = gc.bucket('my-bucket.appspot.com/securityCam');
  const blob = bucket.file(image);
  const blobStream = blob.createWriteStream();
  blobStream.on('error', err => {
    h.response({
      success: false,
      error: err.message || '=-->' + err
    })
  });
  console.log('===---> ', 'no errors::::')

  blobStream.on('finish', () => {
    console.log('done::::::', `https://storage.googleapis.com/${bucket.name}/${blob.name}`) …
Run Code Online (Sandbox Code Playgroud)

javascript base64 node.js google-cloud-storage

1
推荐指数
1
解决办法
4084
查看次数

如何在令牌过期和/或刷新页面后使用 firebase 在 Next.js 中保留身份验证

我正在使用 firebase 和 next.js 构建一个应用程序。我在 firebase 的身份验证流程上遇到了困难。一切进展顺利,直到我注意到一个错误/错误。如果我让计算机登录到应用程序一段时间,并且每当刷新页面时,似乎都会导致我被重定向回登录页面。我可以明白为什么刷新会触发我的重定向,因为可能没有足够的时间来及时检查 onAuthStateChange 以便const { user } = useAuth()运行,因此由于初始页面加载时(刷新后)没有用户。它将进入{ else }导致我此时重定向。但有趣的是,如果我只需单击我的仪表板(受保护的页面)链接,我仍然可以通过身份验证。没有重定向。以下是我的身份验证组件的代码:

AuthComp.js:

import { useRouter } from "next/router";
import { useEffect, useState } from "react";
import { useAuth } from "../../context/AuthContext";
function LoadingScreen() {
    return <div className="fixed top-0 right-0 h-screen w-screen z-50 flex justify-center items-center">
        <div className="animate-spin rounded-full h-32 w-32 border-t-2 border-b-2 border-gray-900"></div>
    </div>
}
export function AuthComp(props) {
    const [isAuthenticated, setIsAuthenticated] = useState(false)
    const router = useRouter();
    const { user …
Run Code Online (Sandbox Code Playgroud)

javascript firebase firebase-authentication next.js

1
推荐指数
1
解决办法
2383
查看次数