Невозможно установить и получить Cookie в .net core 2.0 API - PullRequest
0 голосов
/ 07 июня 2018

Я создал API с использованием .Net Core 2.0 In One на контроллере. Я пытаюсь установить cookie в одном действии и попытаться получить его в другом действии.Но я получаю нулевое значение, когда отлаживаю его.

Код ниже:

public IActionResult Get()
    {
        Response.Cookies.Append("Test","dasdasdasdasd",new CookieOptions {
            Expires=DateTime.Now.AddDays(3)
        });
        return Ok();
    }

    // GET: api/Model/5
    [HttpGet("{id}")]
    public IActionResult Get(int id)
    {
        var z = Request.Cookies["Test"];
        return Ok();
    }

во втором действии, которое я вижу, z равно нулю, когда я останавливаюсь на точке останова.

Что-то мне не хватает, чтобы установить и получить cookie?Помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Я понял свою ошибку.Я не отправил запрос должным образом. В запросе мне нужно было установить

xhrFields: {WithCredentials: true}

фактически файл cookie не был отправлен обратно на сервер, так как я его не установил,когда я добавляю это свойство в запрос ajax, он находит cookie

0 голосов
/ 07 июня 2018

Ваш код работает.Одна вещь, о которой я могу подумать, это когда вы извлекаете куки, которые вам нужно предоставить Id.В противном случае он снова вызовет метод создания действия.

Index.cshtml

<button id="btn-create" type="button">Create Cookie</button>
<button id="btn-retrieve" type="button">Retrieve Cookie</button>

@section Scripts
{
    <script>
        $(function () {
            $('#btn-create').click(function() {
                $.ajax({
                    type: 'GET',
                    url: '@Url.Action("Get", "Values")',
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    success: function (result) {
                        console.log(result);
                    }
                });
            });

            $('#btn-retrieve').click(function() {
                $.ajax({
                    type: 'GET',
                    url: '@Url.Action("Get", "Values", new {id = 123})',
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    success: function (result) {
                        console.log(result);
                    }
                });
            });
        })
    </script>
}

ValuesController.cs

[Produces("application/json")]
[Route("api/Values")]
public class ValuesController : Controller
{
    public IActionResult Get()
    {
        Response.Cookies.Append("Test", "dasdasdasdasd", new CookieOptions
        {
            Expires = DateTime.Now.AddDays(3)
        });
        return Ok();
    }

    // GET: api/Model/5
    [HttpGet("{id}")]
    public IActionResult Get(int id)
    {
        var z = Request.Cookies["Test"];
        return Ok(z);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...