什么是 CORS?
CORS(跨源资源共享)是一项浏览器安全特性,用于保护 Web 应用程序免受来自其他域的恶意攻击。它允许服务器在 HTTP 响应中附加一些特殊的标头,以指示浏览器允许从不同源访问该响应。
在 Deno 中如何使用 CORS?
在 Deno 中使用 CORS,你需要为跨域请求启用 CORS。如果你已经使用了 Deno 标准库的 HTTP 模块或 oak 框架,你可以使用它们提供的内置函数来实现 CORS。
使用 Deno 标准库的 HTTP 模块
在使用 Deno 标准库的 HTTP 模块时,你需要在 HTTP 响应对象中设置 Access-Control-Allow-Origin
标头。允许来自任意域的请求可以使用通配符 *
。以下是一个设置 CORS 标头的示例:
-- -------------------- ---- ------- ------ - ----- - ---- --------------------------------------- ----- --- - ------- ----- ---- --- ------------------- ------- -- ------------------------ --- ----- ------ --- -- ---- - ------------- ----- ------ ------- -------- --- --------- --------------- ------------- ------------------------------ ---- --- --- -
使用 oak 框架
如果你使用 oak 框架,你可以使用 oak-cors 中间件。oak-cors 是一个专门用于处理 CORS 的中间件,它提供了一组选项,可以完全控制 CORS 规则。下面是一个使用 oak-cors 中间件的示例:
-- -------------------- ---- ------- ------ - ----------- - ---- --------------------------------- ------ - ------- - ---- ---------------------------------- ----- --- - --- -------------- -------- --------- ------- ---- --------------------- ---- -- -- ------------- -- - ----------------- - ------ ------- --- ------------------- ------- -- ------------------------ ----- ------------ ----- ---- ---
在使用 CORS 时遇到的问题
POST 请求中的预检请求
在执行某些 POST 请求时,浏览器会首先发送一个预检请求(OPTIONS 请求),以确定服务器是否愿意接受实际的请求。如果服务器没有正确配置跨域响应标头,可能会导致预检请求失败,从而导致实际请求被拒绝。
以下是一个设置了 CORS 标头的 POST 请求处理程序示例:
-- -------------------- ---- ------- ------ - ----- - ---- --------------------------------------- ----- --- - ------- ----- ---- --- ------------------- ------- -- ------------------------ --- ----- ------ --- -- ---- - -- ----------- --- ---------- - -- ------ ------------- ------- ---- -------- --- --------- ------------------------------ ---- ------------------------------- ------ --------- ------------------------------- -------------- ----------------- --------------- --- --- - ---- -- ----------- --- ------- - -- ------ ----- ---- - ----- ----------- ------------- ------- ---- ----- ---------------- -------- --------- ----- - - ---- --- -------- --- --------- ------------------------------ ---- --- --- - -
总结
CORS 是一项浏览器安全特性,用于保护 Web 应用程序免受来自其他域的恶意攻击。在 Deno 中使用 CORS 时,你可以使用 Deno 标准库的 HTTP 模块或 oak 框架提供的内置函数或中间件来实现 CORS。除此之外,还需要注意处理 POST 请求中的预检请求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/647a4712968c7c53b0615a8a