通过前端应用程序和postman / curl从Azure应用服务中获取.net core api的不同响应

问题描述 投票:0回答:1

我已经向Azure App Service发布了asp.net core 2.2 API。在上次发布之后,我已经开始从前端Web应用程序获取PUT方法请求的404响应,但一切仍然可以使用邮递员或卷曲请求。

这是web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\Api.dll" stdoutLogEnabled="true" stdoutLogFile="\\?\%home%\LogFiles\stdout" />
    </system.webServer>
    <httpErrors existingResponse="PassThrough" />
</location>

我已根据此答案httpErrorshttps://stackoverflow.com/a/46200400/11324810标记添加到web.config,但它没有解决问题。

代码甚至不暗示这样的回应:

[HttpPut("google-spreadsheet/sheet-header")]
public async Task<IActionResult> UpdateHeaders([FromBody]UpdateHeadersRequest request)
{
    try
    {
        var provider = await GoogleSheetExporter.CreateSheetProvider(request.SheetUrl, request.UserEmail);
        await provider.UpdateHeadersAndRecordsAsync(request.PresentCandidates.ToList(),
            request.PreviousHeaders, request.NewHeaders);
        return Ok();
    }
    catch (Exception ex)
    {
        return StatusCode(500, $"{ex.Message} | {ex.StackTrace}");
    }
}

屏幕截图有不同的回复:

通过前端网络应用程序进行404响应:https://i.stack.imgur.com/sEb2H.png

通过Postman的200回应:https://i.stack.imgur.com/prI09.png

通过curl响应200:https://i.stack.imgur.com/1PHe7.png

c# azure asp.net-core azure-web-app-service
1个回答
0
投票

它适用于邮递员,因为这是一个扩展,它只是发送请求。另一方面,当从浏览器发送时,出于安全原因,请求的发送方式不同。

首先,浏览器向您的web api发送OPTIONS请求。这是为了确定使用这些参数发送请求是否可以接受。

您的后端应该处理请求,响应并设置响应标头,如:

•Access-Control-Allow-Origin

•访问控制允许标头

•Access-Control-Allow-Credentials

•访问控制允许方法

请确保您已在API中启用了CORS。

之后,根据OPTIONS响应的标题,浏览器会将PUT发送到http://YourAPIEndPoint,如果允许一切,如原点,方法等。

您实际上可以从邮递员界面生成代码片段,以查看是否缺少任何标题

enter image description here

它看起来像这样

enter image description here

试试看它是否有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.