reactjs 404 Not Found Not Found

r8xiu3jd  于 2023-05-06  发布在  React
关注(0)|答案(3)|浏览(116)

我正在使用C#的Web API,并从React应用程序调用它。从前端:

const resp = await axios.post("http://localhost:26594/api/Member/Login", {
  member: user,
  sessionid,
});

在我安装的web API中:

在WebAPIConfig.cs中,我添加了:

var cors = new EnableCorsAttribute("*", "*", "*");
        config.EnableCors(cors);

但当我尝试调用它时,我收到:

然后我尝试添加web.config:

<httpProtocol>
      <customHeaders>
          <!-- Adding the following custom HttpHeader 
             will help prevent CORS from stopping the Request-->
          <add name="Access-Control-Allow-Origin" value="*" />
      </customHeaders>
  </httpProtocol>

和/或

<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
    <remove name="OPTIONSVerbHandler" />
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

但是没有任何效果!

注意:我尝试了一个GET方法,并正常工作。POST方法不起作用。

zbq4xfa0

zbq4xfa01#

执行以下步骤
1.打开项目的App_Start文件夹中的WebApiConfig.cs文件。
1.将以下代码添加到Register方法:
//启用CORS全局配置.EnableCors();
1.将[EnableCors]属性添加到控制器或控制器方法。
【EnableCors(起源:“",header:“",方法:“”)] public class MyController:ApiController { //控制器方法...}
请注意,origins、header和methods参数指定了CORS策略。在本例中,策略允许来自任何来源(
)、具有任何标头和任何HTTP方法的请求。
或者,您可以创建一个单独的类来配置CORS策略,并在Register方法中引用它:

public static class CorsConfig
{
    public static void Register(HttpConfiguration config)
    {
        var cors = new EnableCorsAttribute("*", "*", "*");
        config.EnableCors(cors);
    }
}

然后在Register方法中调用它:

public static void Register(HttpConfiguration config)
{
    CorsConfig.Register(config);
   // Other configuration code...
}
ee7vknir

ee7vknir2#

已解决

原来IIS中有一个设置不允许OPTIONS predicate 。
若要检查,请打开IIS,如果列出了您的网站,请单击它,或单击“默认网站”。在IIS部分下单击“请求筛选”。
如果你看到的是空列表,那么所有的动词都是允许的。否则,如果你看到动词,旁边是“假”,那么它是不允许的。所以从列表中删除它以允许它。

**注意:如果您的API不允许CORS,则您将收到405 not allowed。如果IIS出现上述错误,您将收到404 Not Found。

bpzcxfmw

bpzcxfmw3#

如果您使用的是ASP.NETCore,则需要在Startup类的Configure方法中启用CORS中间件。你可以通过添加以下代码来实现这一点:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // ...

    app.UseCors(builder => builder
        .AllowAnyOrigin()
        .AllowAnyMethod()
        .AllowAnyHeader());

    // ...
}

相关问题