在我的 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 错误消息?
谢谢!
我正在创建一个反应应用程序,我希望我的用户将其嵌入到他们的网站上。该应用程序将显示在两个 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) 我已经在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) 我正在尝试转换一个秘密的 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
我接受了测试,那个人刚才说:
改进html
<div class="header"></div>
<div class="main"></div>
<div class="footer"></div>
Run Code Online (Sandbox Code Playgroud)
所有我能想到的是使用HTML5 <header>,<section>以及<footer>标签,但我没有反应,就他如何喜欢它是没有反馈改进.
除了标签之外还有什么可以改进 HTML的吗?
我正在使用一个字符串,在这里我需要提取前n个字符,直到数字开始。这样做的最佳方法是什么,因为有时字符串以数字开头:7EUSA8889er898我将需要提取,7EUSA但其他字符串示例将是SWFX74849948,我需要SWFX从该字符串中提取。
不知道如何使用正则表达式执行此操作,我的有限知识在这一点上阻止了我:
^(\w{4})只是获得了我的前四个字符,但是我并没有真正的停顿点,因为有时字符串可能somelongstring292894830982会要求我somelongstring
我正在构建一个应用程序,它允许我从访问网络摄像头的 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) 我正在使用 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 ×7
node.js ×3
reactjs ×2
base64 ×1
css3 ×1
encryption ×1
firebase ×1
hapi.js ×1
hmac ×1
html ×1
html5 ×1
next.js ×1
postmessage ×1
regex ×1