在 Deno 中使用 CORS 时遇到问题?

阅读时长 5 分钟读完

什么是 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

纠错
反馈