gpt4 book ai didi

javascript - 向 ASP.NET Core Web API 发出发布请求时,跨域请求被阻止

转载 作者:行者123 更新时间:2023-12-04 13:59:37 26 4
gpt4 key购买 nike

我有一个包含 2 个 Controller 的 Web API,并且在我的 Startup 中启用了 Cors。类(class),这是我的 ConfigureServices方法:

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
services.AddAutoMapper();
}

这里是配置方法:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}

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

app.UseHttpsRedirection();
app.UseMvc();
}

现在,我有两个 Controller 。当我制作 GET请求此方法,一切正常:
[Route("api/[controller]")]
[ApiController]
[EnableCors("MyPolicy")]
public class MovieController : ControllerBase
{
public async Task<IActionResult> Get()
{
HttpClient httpClient = new HttpClient();

var responseMessage = await httpClient.GetAsync("https://copafilmes.azurewebsites.net/api/filmes");

if (!responseMessage.IsSuccessStatusCode) return null;

var jsonResult = await responseMessage.Content.ReadAsStringAsync();

return Ok(jsonResult);
}

现在,当我尝试制作 POST 时对这个:
[Route("api/[controller]")]
[ApiController]
[EnableCors("MyPolicy")]
public class CupController : ControllerBase
{
private readonly IMapper mapper;

public CupController(IMapper mapper)
{
this.mapper = mapper;
}

[HttpPost]
public IActionResult Post([FromBody] IEnumerable<MovieViewModel> moviesViewModel)
{
var movies = mapper.Map<IEnumerable<Movie>>(moviesViewModel).ToList();

var cup = new Cup(movies);
cup.Run();

return Ok(cup.Id);
}
}

然后我在浏览器控制台中收到消息:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://worldcupapi-gabs.azurewebsites.net/api/cup. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

我正在尝试通过 Vuejs 简单应用程序发布这篇文章,您可以在这里尝试: https://codesandbox.io/s/j23np20663

只需选择 8 张卡片(点击它们,它们会变成灰色)并点击“提交”按钮。

最佳答案

Serpent5 在上面提供了有效的答案;我将其添加为答案,因为这是我在搜索我的 CORS 问题时遇到的第一个问题,并且我的问题的原因并不完全是 Serpent5 所指出的,但扩展他的评论提供了答案。
Serpent5 的回答基本上是说另一个错误导致服务器无法正确响应(例如 500 内部服务器错误),但浏览器开发工具控制台显示的是 CORS 错误。
就我而言,这是因为我没有在服务器上正确配置 https。

关于javascript - 向 ASP.NET Core Web API 发出发布请求时,跨域请求被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53162611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com