@RequestMapping (производит = "application / json; charset = utf-8") блокирует запросы jsonp? - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь отладить проблему на рабочем сервере, где внутри контроллера есть метод, который аннотируется:

@RequestMapping(value = "/endpoint", method = RequestMethod.GET, produces = "application/json;charset=utf-8")

И в javascript для этой конечной точки выполняется вызов ajax:

$.ajax({
            type: "GET",
            async: true,
            url: "<%=endpointUrl%>",
            dataType: "jsonp",
            success: function(data){
                console.log("success!");
            },
            error: function(xhr, options, error){
                console.log("fail!");
            }
});

Но в chrome я получаю предупреждение о блокированном ответе перекрестного происхождения (CORB) с блокировкой перекрестного происхождения ... с приложением MIME-типа / json.

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

EDIT: дополнительная информация, эти заголовки установлены в конечной точке:

httpResponse.setHeader("Content-Security-Policy", "default-src 'self' 'unsafe-inline' 'unsafe-eval'");
httpResponse.setHeader("X-Content-Type-Options", "nosniff");
httpResponse.setHeader("X-XSS-Protection", "1");

Ответы [ 2 ]

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

Я понял это.

@RequestMapping(value = "/endpoint", method = RequestMethod.GET, produces = "application/json;charset=utf-8")

изменить на

@RequestMapping(value = "/endpoint", method = RequestMethod.GET, produces = "text/javascript;charset=utf-8")

Проблема вызвана

httpResponse.setHeader("X-Content-Type-Options", "nosniff");

принудительным применением типа контента

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

Измените jsonp на json, поскольку ваш сервер возвращает тип контента JSON, но не jsonp.

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