关于在firebase云函数中使用express`app.get()`访问文件的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ActionController::RoutingError没
关于在 firebase 云函数中使用 express `app.get()` 访问文件的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ActionController :: RoutingError没有路由与[GET]“ / vendor / assets / stylesheets / bootstrap.min.css”匹配 app / assets / stylesheets / application.css: app / assets / javascript / application.js: app / views / layout / application.html.erb: app / j、Android 上的 Flutter/Firebase verifyPhoneNumber() 总是调用 recaptcha“验证你不是机器人” 作为 Firebase verifyPhoneNumber() 流程的一部分,Android 需要什么配置以及在哪里进行配置才能停止重新验证?我已验证以下内容:Firebase 中发生了一些变化,但我找不到任何说明如何在 Android 上为 Firebase verifyPhoneNumber() 克服 recaptcha 的文档、angular – ng new hello错误:路径“/app/app.module.ts”不存在.路径“/app/app.module.ts”不存在、app.use(express.static(__dirname + '/public')) 和 app.use(express.static('public')) 的区别;等相关知识的信息别忘了在本站进行查找喔。
本文目录一览:- 在 firebase 云函数中使用 express `app.get()` 访问文件
- ActionController :: RoutingError没有路由与[GET]“ / vendor / assets / stylesheets / bootstrap.min.css”匹配 app / assets / stylesheets / application.css: app / assets / javascript / application.js: app / views / layout / application.html.erb: app / j
- Android 上的 Flutter/Firebase verifyPhoneNumber() 总是调用 recaptcha“验证你不是机器人” 作为 Firebase verifyPhoneNumber() 流程的一部分,Android 需要什么配置以及在哪里进行配置才能停止重新验证?我已验证以下内容:Firebase 中发生了一些变化,但我找不到任何说明如何在 Android 上为 Firebase verifyPhoneNumber() 克服 recaptcha 的文档
- angular – ng new hello错误:路径“/app/app.module.ts”不存在.路径“/app/app.module.ts”不存在
- app.use(express.static(__dirname + '/public')) 和 app.use(express.static('public')) 的区别;
在 firebase 云函数中使用 express `app.get()` 访问文件
如何解决在 firebase 云函数中使用 express `app.get()` 访问文件
我尝试将 Firebase 托管与 Firebase 函数结合使用,以便只有拥有有效 Firebase 令牌的用户才能访问 .html-content。
在访问 Firebase 托管时,我能够在我的 iOS 应用程序中发送令牌,并且我的云函数被调用并成功解码令牌(我在 Firebase 函数日志中看到“ID 令牌正确解码”)。>
之后应该打开 index.html,它位于我的 /functions 文件夹的子文件夹 (/myhomepage) 中(所以不在“/public”中)。
我的应用程序浏览器中总是出现错误:“无法获取/”
Firebase-Functions-Log 说:“函数执行耗时 1654 毫秒,完成状态代码:404”
index.js 里面的代码:
const admin = require("firebase-admin");
const functions = require(''firebase-functions'');
const express = require(''express'');
const cookieParser = require(''cookie-parser'')();
const cors = require(''cors'')({origin: true});
const app = express();
admin.initializeApp();
let db = admin.firestore();
// Express middleware that validates Firebase ID Tokens passed in the Authorization HTTP header.
// The Firebase ID token needs to be passed as a Bearer token in the Authorization HTTP header like this:
// `Authorization: Bearer <Firebase ID Token>`.
// when decoded successfully,the ID Token content will be added as `req.user`.
const validateFirebaseIdToken = async (req,res,next) => {
functions.logger.log(''Check if request is authorized with Firebase ID token'');
if ((!req.headers.authorization || !req.headers.authorization.startsWith(''Bearer '')) &&
!(req.cookies && req.cookies.__session)) {
functions.logger.error(
''No Firebase ID token was passed as a Bearer token in the Authorization header.'',''Make sure you authorize your request by providing the following HTTP header:'',''Authorization: Bearer <Firebase ID Token>'',''or by passing a "__session" cookie.''
);
res.status(403).send(''Unauthorized'');
return;
}
let idToken;
if (req.headers.authorization && req.headers.authorization.startsWith(''Bearer '')) {
functions.logger.log(''Found "Authorization" header'');
// Read the ID Token from the Authorization header.
idToken = req.headers.authorization.split(''Bearer '')[1];
} else if(req.cookies) {
functions.logger.log(''Found "__session" cookie'');
// Read the ID Token from cookie.
idToken = req.cookies.__session;
} else {
// No cookie
res.status(403).send(''Unauthorized'');
return;
}
try {
const decodedIdToken = await admin.auth().verifyIdToken(idToken);
functions.logger.log(''ID Token correctly decoded'',decodedIdToken);
req.user = decodedIdToken;
next();
return;
} catch (error) {
functions.logger.error(''Error while verifying Firebase ID token:'',error);
res.status(403).send(''Unauthorized'');
return;
}
};
app.use(cors);
app.use(cookieParser);
app.use(validateFirebaseIdToken);
app.get(''/myhomepage'',(req,res) => { // <-- The problem seems to be here
functions.logger.log(''Calling get.''); // This line does not get called in my log.
res.status(200).sendFile(''/index.html'');
});
exports.myfunction = functions.https.onRequest(app);
令牌成功解码后如何访问“/functions/myhomepage”中的内容?
解决方法
通常,您只能以 send()
、redirect()
或 end()
结束 HTTP 函数,请参阅 doc。
我从未尝试过,但我认为使用 sendFile()
行不通。如果您想将用户重定向到通过 Firebase 托管可用的静态页面,您应该使用 redirect()
。另一种可能性是将 HTML 字符串传递给 send()
方法,请参阅 here。
ActionController :: RoutingError没有路由与[GET]“ / vendor / assets / stylesheets / bootstrap.min.css”匹配 app / assets / stylesheets / application.css: app / assets / javascript / application.js: app / views / layout / application.html.erb: app / j
如何解决ActionController :: RoutingError没有路由与[GET]“ / vendor / assets / stylesheets / bootstrap.min.css”匹配 app / assets / stylesheets / application.css: app / assets / javascript / application.js: app / views / layout / application.html.erb: app / j
我正在Rails上执行此应用程序,页面加载正常,但在控制台中显示:
Started GET "/vendor/assets/stylesheets/bootstrap.min.css" for ::1 at 2020-08-17 09:09:51 -0500
Started GET "/vendor/assets/javascripts/bootstrap.min.js" for ::1 at 2020-08-17 09:09:51 -0500
ActionController::RoutingError (No route matches [GET]
"/vendor/assets/stylesheets/bootstrap.min.css"):
ActionController::RoutingError (No route matches [GET]
"/vendor/assets/javascripts/bootstrap.min.js"):
在我的供应商文件夹中,我同时拥有文件夹,javascript和样式表,并分别位于各自的bootsrtrap.min中。 即使在application.html.erb中,我也有以下内容:
<link href="vendor/assets/stylesheets/bootstrap.min.css" rel="stylesheet">
<%= csrf_Meta_tags %>
<%= stylesheet_link_tag ''application'',media: ''all'',''data-turbolinks-track'': ''reload'' %>
<%= javascript_include_tag ''application'',''data-turbolinks-track'': ''reload'' %>
</head>
<body>
<!-- Navigation -->
<nav>
<div>
<ahref="#">Instagram Clone</a>
<buttontype="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
<span></span>
</button>
<divid="navbarResponsive">
<ul>
<li>
<ahref="#">Home
<span>(current)</span>
</a>
</li>
<li>
<ahref="#">About</a>
</li>
<li>
<ahref="#">Services</a>
</li>
<li>
<ahref="#">Contact</a>
</li>
</ul>
</div>
</div>
</nav>
<!-- Page Content -->
<div>
<div>
<div>
<%= yield %>
</div>
</div>
</div>
<!-- Bootstrap core JavaScript -->
<!--<script src="vendor/jquery/jquery.slim.min.js"></script>-->
<script src="vendor/assets/javascripts/bootstrap.min.js"></script>
</body>
</html>