Как получить куки в посте http - PullRequest
0 голосов
/ 28 августа 2018

Я совершенно новый в http сервлете. Моя цель -

получить куки из браузера и сделать магазин куки: логин

в redis, когда он отправляет запрос на мою конечную точку API. Так что в следующий раз, когда он вызывает мой API, ему не нужно передавать имя пользователя мне только куки, чтобы я мог связать его (куки) с этим конкретным именем пользователя.

Моя проблема в том, что Я не могу получить куки из браузера, даже если я его установил .

Вот мой javascript ajax (document.cookie = "testcookie=1234567890; max-age=3600";)

$('#submit').click(function(){
        document.cookie = "testcookie=1234567890; max-age=3600";
        var coin = $.trim($('#coin').val());
        var username = $.trim($('#username').val());
        var usern = /^[a-zA-Z0-9]{1,}$/;

        $.ajax({
            url:'http://localhost:9086/api/v1/ms/wxpay/wxpayorder',
            method: "POST",
            data:JSON.stringify({username:username,coin:parseInt(coin)}),
      dataType:'json',
      contentType: 'application/json'
        }).done(function(data){
            loading.hide();
            alert(JSON.stringify(data));return;
      data = data.data;
            if(data.success) {
        //alert("success");
        jsApiCall(data.jsApiParameters);
            } else {
                weui.alert('服务端错误,请刷新重试或联系客服');
            }

        });
    });

Вот моя конечная точка поста API

@PostMapping("/wxpayorder")
@CrossOrigin
fun createOrder(
                response: HttpServletResponse,
                request: ServletRequest,
                response2: HttpServletRequest,
                @RequestBody req: WxPay
): String{


    val cookies = "testcook"
}

причина, по которой я сказал, что не могу его получить, заключается в том, что я пытался найти все атрибуты внутри ответа (HttpServletResponse), запроса (ServletRequest), response2 (HttpServletRequest), значение Cookies равно нулю или -1 (getHeaderNames).

1 Ответ

0 голосов
/ 28 августа 2018

Ваш запрос Ajax содержит абсолютный URL, а код на стороне сервера - @CrossOrigin. Поэтому разумно предположить, что вы делаете запрос Ajax с несколькими источниками.

  • Ваша HTML-страница загружена с http://example.com.
  • Ваш код, document.cookie = "testcookie=1234567890; max-age=3600"; установит cookie для example.com
  • Ваш запрос к http://localhost:9086/api/v1/ms/wxpay/wxpayorder не будет включать этот cookie, потому что это не запрос к example.com.

Ваш код, на example.com, не может установить cookie для localhost: 9086. Если бы это было возможно, то это было бы серьезным риском для безопасности.

Найдите другой способ передачи информации, не связанной с файлами cookie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...