在开发 Web 应用程序时,POST 请求是非常常见的。然而,在使用 Hapi 框架时,你可能会遇到 POST 请求被拒绝的问题。这个问题的原因是 Hapi 的默认配置会拒绝所有未知来源的 POST 请求。本文将介绍如何解决这个问题,让你的 POST 请求在 Hapi 中被成功处理。
解决方案
Hapi 框架可以通过设置路由配置参数,来允许特定来源的 POST 请求。具体来说,你需要将 payload 的 allow 属性设置为 true,并在 routes 中添加 cors 属性。
// www.javascriptcn.com code example
const Hapi = require('@hapi/hapi');
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
server.route({
method: 'POST',
path: '/',
config: {
cors: {
origin: ['*'],
headers: ['Accept', 'Authorization', 'Content-Type', 'If-None-Match', 'Accept-language']
}
},
handler: (request, h) => {
return 'Hello world';
}
});
await server.start();
console.log('Server running on %s', server.info.uri);
};
init();如上代码所示,我们首先创建一个 Hapi 服务器,并设置路由来处理 POST 请求。在路由配置中,我们使用 config 对象来设置 CORS 策略。cors 对象包含两个属性:
origin:一个包含允许来源的数组。在本例中我们设置为['*'],表示允许所有来源。headers:一个包含在响应中允许的头信息的数组。
最后,我们在 handler 处理器函数中返回一个简单的字符串,以验证路由已成功配置。现在你可以测试你的 POST 请求是否被 Hapi 后台处理成功。
总结
在最初设置 Hapi 框架时,你可能会遇到 POST 请求被拒绝的问题。这个问题的根本原因在于 Hapi 的默认配置,它会拒绝所有未知来源的 POST 请求。本文中我们介绍了解决这个问题的方法,即设置路由配置参数,允许特定来源的 POST 请求。希望本文能够帮助你解决类似的问题,让你的 Web 应用程序开发更加高效。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/64eebce2f6b2d6eab38b4c6f