Ajax 我能';t使用json使用react向我的web api发出Post请求

Ajax 我能';t使用json使用react向我的web api发出Post请求,ajax,reactjs,cors,fetch,asp.net-core-webapi,Ajax,Reactjs,Cors,Fetch,Asp.net Core Webapi,我在ASP.NET Core中创建了一个webapi,我需要使用React使用它,web api工作正常,如果我使用curl或postman等,它工作正常。当我打算使用React时,当我试图从问题中请求使用js的API时,问题就开始了 让事情进一步复杂化的是,当我请求其他API时,它工作正常,这让我相信问题出在我的API中,但正如我所说的,它只与其他API一起工作,而它没有反应。我试过很多方法 API正在本地网络上的IIS上运行 尝试的方法 使用Ajax 使用Fetch 使用请求 错误 控制台

我在ASP.NET Core中创建了一个webapi,我需要使用React使用它,web api工作正常,如果我使用curl或postman等,它工作正常。当我打算使用React时,当我试图从问题中请求使用js的API时,问题就开始了

让事情进一步复杂化的是,当我请求其他API时,它工作正常,这让我相信问题出在我的API中,但正如我所说的,它只与其他API一起工作,而它没有反应。我试过很多方法

API正在本地网络上的IIS上运行

尝试的方法 使用Ajax 使用Fetch 使用请求 错误 控制台

网络选项卡

当我这样做而不需要将内容类型更改为JSON时,它就可以工作了 因为API返回时表示它不是有效类型


除了在.NET配置中允许COR之外。对于所有选项请求,您还需要返回200 OK

不确定它在.NET中是如何完成的,但只需创建一个检测请求方法的中间件,如果有选项,就可以在那里以200状态完成请求。

像这样尝试

 public void ConfigureServices(IServiceCollection services)
 { 
     services.AddCors();
 }

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
 {
        app.UseCors(option => option.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials());

        app.UseAuthentication();
        app.UseMvc();
 }

我也遇到了同样的问题,似乎需要将操作添加到控制器中的HttpPost属性中

这里有一个例子

    [HttpPost("[action]")]
    public void SubmitTransaction([FromBody] SubmitTransactionIn request)
    {
        Ok();
    }

没有“Access Control Allow Origin”…您的API中的问题,我的意思是它来自服务器端,而不是客户端,但当我尝试使用post man或curl时,它可以正常工作。您应该阅读以下内容:我将IIS配置更改为允许CORS,但我没有成功,您是否有任何想法?您还需要允许选项请求。除了CORS。不确定.NET,但在Laravel中,我创建了一个中间件,它将200OK返回到所有选项请求。这是非常不安全的,不是吗?只是为了尝试此代码是否正常工作,如果正常工作,您可以自定义URL。这是正确的,但更准确地说,状态代码可以是任何200-209状态代码-它不必只有200。许多服务器返回204个选项。另见
var request = new XMLHttpRequest ();
    request.open ('POST', 'http://192.168.0.19:5200/api/token', true);
    request.setRequestHeader ('Content-Type', 'application / json; charset = UTF-8');
    request.send (login);
 public void ConfigureServices(IServiceCollection services)
 { 
     services.AddCors();
 }

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
 {
        app.UseCors(option => option.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials());

        app.UseAuthentication();
        app.UseMvc();
 }
    [HttpPost("[action]")]
    public void SubmitTransaction([FromBody] SubmitTransactionIn request)
    {
        Ok();
    }