「解决方案」解决.NET Core 中的 CORS 问题

在.NET Core Web 应用程序中使用 AJAX 和跨域资源共享(CORS)是非常常见的。但是,由于安全性和浏览器规则,CORS会引起许多问题。本篇文章旨在介绍.NET Core中的CORS问题以及如何解决它们。

背景

在网络应用中,我们有时需要从不同的源获取资源。当 JavaScript从一个网站中请求数据另一个网站上时,就会发生CORS问题。浏览器会发送一个 OPTIONS 请求头,以确认远程服务器是否与当前网站允许此请求。如果要么远程服务器不允许该请求,要么当前网站不允许该请求,则浏览器将阻止此请求并引发CORS异常。为了避免这些问题,我们必须通过配置我们的.NET Core应用程序来处理CORS请求。

解决方法

方法1: 使用 Microsoft.AspNetCore.Cors 包

为了使.NET Core应用程序支持CORS,我们需要启动Microsoft.AspNetCore.Cors扩展包。因此,首先,在 NuGet 包管理器中搜索 Microsoft.AspNetCore.Cors 并安装该软件包。

接下来,在 Startup.cs 文件中添加以下代码:

------ ---- ------------------------------------ ---------
-
    ------------------------ --
    -
        -----------------------------
            ------- --
            -
                ------------------------
                       -----------------
                       ------------------
            ---
    ---

    ------------------
-

------ ---- ----------------------------- ---- ------------------- ----
-
    ------------------------
    -------------
-

上述代码将允许任何来源的跨域http请求(即, AllowAnyOrigin() ),同时还允许使用任何方法和标题( AllowAnyMethod()AllowAnyHeader())。您可以根据需要更改此配置。这些将添加到应用程序的 IOC 容器和请求处理管道中。

方法2: 自己实现CORS

.NET Core应用程序还支持自定义 CORS 实现。如果我们不想使用 Microsoft.AspNetCore.Cors 包,或者我们需要更详细的控制,则可以从头开始编写CORS逻辑。

在 Startup.cs 文件中添加以下代码:

------ ---- ------------------------------------ ---------
-
    -- -- ----
    ------------------------ --
    -
        -----------------------------------------
            ------- --
            -
                --------------------------------------------
                       -----------------
                       ------------------
            ---
    ---
    ------------------
-

------ ---- ----------------------------- ---- ------------------- ----
-
    ------------- --------- ----- --
    -
        ----------------------------------------------------------- -------------------------
        ------------------------------------------------------------ -------------- -------------------
        ------------------------------------------------------------ -----
        ----- -------
    ---
    
    -----------------
    -------------------------- --
    -
        ---------------------------
    ---
-

上述代码将允许从 http://localhost:4200 请求我们的 API。这里,我们设置了特定的来源 ( WithOrigins()),允许使用任何头和方法 (AllowAnyHeader()AllowAnyMethod() )。

示例代码

以下是一个跨域POST请求的实现示例:

--------
   ----- -------
   ------------ -------------------
   --------- -------
   ---- -------------------------------------
   ----- -------------------
   ------------ -----
   -------- -------- ------ -
      ------------------
   --
   ------ -------- ----- ----------- ------------ -
      ----------------------------
   -
---

结论

.NET Core中的CORS问题既常见又困难,但是可以通过Microsoft.AspNetCore.Cors包或自定义解决方案成功解决。以上示例和代码都可以帮助您开始解

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6729cd512e7021665e25b11e