CORS (Cross-Origin Resource Sharing) 是一种机制,允许网页发出跨域请求。在前端开发中,经常需要和其他域名下的 API 进行交互,因此 CORS 的使用非常普遍。本文将介绍如何在 Hapi 中使用 CORS。
什么是 CORS
在同源策略下,网页只能请求同源下的资源,即协议、域名、端口号均相同。CORS 允许网页请求非同源下的资源,但需要服务器端配合。
CORS 的原理是在 HTTP 头信息中添加几个字段,告诉浏览器是否允许跨域请求。常用的字段有 Access-Control-Allow-Origin
、Access-Control-Allow-Methods
、Access-Control-Allow-Headers
等。
Hapi 中使用 CORS
Hapi 是一款 Node.js 的 Web 框架,它的插件机制非常灵活,可以方便地添加 CORS 支持。下面是一个示例:
// javascriptcn.com 代码示例 const Hapi = require('@hapi/hapi'); const init = async () => { const server = Hapi.server({ port: 3000, host: 'localhost' }); await server.register(require('hapi-cors')); server.route({ method: 'GET', path: '/', handler: (request, h) => { return 'Hello World!'; } }); await server.start(); console.log(`Server running at: ${server.info.uri}`); }; init();
在上面的示例中,我们使用了 hapi-cors
插件来实现 CORS 支持。该插件默认开启了跨域请求,如果需要更细粒度的控制,可以通过配置选项进行设置。
// javascriptcn.com 代码示例 await server.register({ plugin: require('hapi-cors'), options: { origins: ['*'], // 允许跨域的域名列表,可以是字符串或正则表达式 methods: ['GET', 'POST'], // 允许跨域的 HTTP 方法 headers: ['Accept', 'Authorization'], // 允许跨域的 HTTP 头信息 maxAge: 86400, // 预检请求的有效期,单位秒 credentials: true // 是否允许发送 Cookies } });
总结
CORS 是前端开发中非常重要的一部分,它允许网页请求非同源下的资源。在 Hapi 中,我们可以通过使用 hapi-cors
插件来方便地添加 CORS 支持。希望本文对读者有所帮助,让你更好地理解和使用 CORS。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/656af8bbd2f5e1655d373197