我正在尝试调试生产服务器上的问题,其中 Controller 内有一个方法,该方法注释为:
@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 类型 application/json。
我认为 jsonp 用于“绕过”get 请求的同源策略?为什么会被屏蔽?
编辑:附加信息,这些 header 在端点中设置:
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");
最佳答案
将 jsonp 更改为 json,因为您的服务器返回内容类型 JSON,但不是 jsonp。
关于java - @RequestMapping( Produces = "application/json;charset=utf-8") 是否会阻止 jsonp 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56356271/