кросс-домен может быть установлен, но не может получить значение - PullRequest
0 голосов
/ 06 января 2020

У меня есть служба, которая устанавливает повара ie для отключения всплывающих окон со страницы. Я установил домен для этого повара ie, и он должен быть доступен для этого домена. Однако, когда я вызываю страницу с субдомена, java не взял значение cook ie, и вместо этого все еще отображалось всплывающее окно.

ie.

http://www.example.com/landing
landing page (cookie is empty - popup was shown) -> calls java backend to set cookie (pop-up)

cookie - {name: 'pop' value: 'n' }
domain - example.com

http://www.abc.example.com/
page with subdomain (I can see the cookie) 
cookie - {name: 'pop' value: 'n' }
domain - example.com

-> make ajax call from http://www.abc.example.com/ to http://www.example.com/landing
cookie - {name: 'pop' value: 'n' }
domain - example.com

Теперь, когда я попытался приземлиться на http://www.example.com/landing, я увидел, что всплывающее окно все еще отображается. Даже для повара ie было установлено значение 'n'. Из журнала я вижу, что значение, полученное от повара ie, равно нулю. Почему это происходит ??

Java бэкэнд -

    @RequestMapping(value = "/landing", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
    public @ResponseBody Object getPopup(@RequestBody PopRequest req, HttpServletRequest request,
            HttpServletResponse response) {
    ....
     String popup = getCookie(request, "pop");
     // this popup is null
    ... 


}
    public String getCookie(HttpServletRequest request, String name) {
        String value = "";
        Cookie[] cookies = request.getCookies();
        if (cookies != null) {
            for (Cookie cookie : cookies) {
                if (cookie.getName().equalsIgnoreCase(name)) {
                    jwt = cookie.getValue();
                }
            }
        }
        return value;
    }

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

1 Ответ

0 голосов
/ 18 января 2020

В коде бэкэнда я вижу, что вы инициализируете значение пустой строкой, и значение cook ie присваивается переменной jwt. Итак, в конце концов reponse (значение) возвращает ноль.

public String getCookie(HttpServletRequest request, String name) {
        String value = null;
        Cookie[] cookies = request.getCookies();
        if (cookies != null) {
            for (Cookie cookie : cookies) {
                if (cookie.getName().equalsIgnoreCase(name)) {
                    value = cookie.getValue();
                }
            }
        }
        return value;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...