Как я могу получить Http заголовок вызова API из WebApi - PullRequest
0 голосов
/ 23 мая 2019

У меня есть два приложения WebApi (.NET Core), например WebApi1 и WebApi2. Теперь я звоню / потребляю WebApi1 (конечная точка) из WebApi2. Как получить значения заголовка HTTP WebApi1 из приложения WebApi2?

Попробовал с Request.Header; но не получил заголовки WebApi1. Вот код, написанный в действии контроллера -

                    (Request?.Headers ?? throw new Exception("Http Header is Null")).ToDictionary<KeyValuePair<string, StringValues>, string, string>(
                        header => header.Key, header => header.Value);

здесь я получаю заголовок WebApi2.

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Я пропустил «Включить CORS» в моем приложении.

https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-2.2

options.AddPolicy(MyAllowSpecificOrigins,
        builder =>
        {
            builder.WithOrigins("http://example.com",
                                "http://www.contoso.com")
                                **.AllowAnyHeader()**
                                .AllowAnyMethod();
        });

здесь «AllowAnyHeader» требуется для передачи пользовательского заголовка.Теперь я могу захватить пользовательский заголовок http.

0 голосов
/ 24 мая 2019

Для вызова web api1 из api2, вы можете попробовать HttpClient, например:

[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
    private readonly HttpClient _client;
    public ValuesController(IHttpClientFactory httpClientFactory)
    {
        _client = httpClientFactory.CreateClient();
    }
    // GET api/values
    [HttpGet]
    public async Task<ActionResult<IEnumerable<string>>> Get()
    {
        var response = await _client.GetAsync("https://localhost:44349/api/values");
        var headers = response.Headers.ToList();
        return new string[] { "value1", "value2" };
    }

И зарегистрируйте HttpClient по

public void ConfigureServices(IServiceCollection services)
{
    services.AddHttpClient();
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...