@RequestMapping(produces =“ application / json; charset = utf-8”)是否阻止jsonp请求?

时间:2019-05-29 08:33:07

标签: java spring spring-mvc servlets

我正在尝试调试生产服务器上的问题,该服务器上有一个方法,其注释方式为:

@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浏览器中,我收到MIME类型为application / json的跨域读取阻止(CORB)阻止跨源响应的警告。

我认为jsonp用于“绕过”获取请求的同源策略吗?为什么会被阻止?

编辑:其他信息,这些标头在端点中设置:

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 :(得分:0)

当您的服务器返回内容类型JSON而不是jsonp时,将jsonp更改为json。

答案 1 :(得分:0)

我知道了。

@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");

强制内容类型