У меня есть API в ядре asp.net:
[HttpPost]
public IActionResult Post([FromBody] Reservation res)
{
StringValues key = Request.Headers["Key"]; // no header when making jquery .ajax() call
return Ok(repository.AddReservation(new Reservation
{
Name = res.Name,
StartLocation = res.StartLocation,
EndLocation = res.EndLocation
}));
}
Для этого API я выполняю вызов API с помощью метода jQuery AJAX () следующим образом:
$.ajax({
url: "http://localhost:8888/api/Reservation",
headers: {
Key: "Key",
Secret: "Secret@123"
},
method: "post",
contentType: "application/json",
data: JSON.stringify({
Id: 0,
Name: $("#Name").val(),
StartLocation: $("#StartLocation").val(),
EndLocation: $("#EndLocation").val()
}),
success: function (result, status, xhr) {
console.log(result);
},
error: function (xhr, status, error) {
console.log(xhr)
}
});
Проблема в том, что заголовки не отправляются в API, потому что моя точка останова на этой строке StringValues key = Request.Headers["Key"];
не получает никакого значения заголовка, почему?
Я также хочу сказать вам, что значения параметра данных из .ajax () принимаются моим API, но не значениями заголовков. Помогите, пожалуйста?
Я могу легко отправлять заголовки, вызывая API через приложение ASP.NET MVC, но не с помощью jQuery.Работающий код:
[HttpPost]
public async Task<IActionResult> AddReservation(Reservation reservation)
{
Reservation receivedReservation = new Reservation();
using (var httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Add("Key", "Secret@123");
StringContent content = new StringContent(JsonConvert.SerializeObject(reservation), Encoding.UTF8, "application/json");
using (var response = await httpClient.PostAsync("http://localhost:8888/api/Reservation", content))
{
string apiResponse = await response.Content.ReadAsStringAsync();
try
{
receivedReservation = JsonConvert.DeserializeObject<Reservation>(apiResponse);
}
catch(Exception ex)
{
ViewBag.Result = apiResponse;
return View();
}
}
}
return View(receivedReservation);
}
Скажите, пожалуйста, почему jQuery не может отправлять заголовки с помощью вызова API?