java - @RequestMapping( Produces = "application/json;charset=utf-8") 是否会阻止 jsonp 请求?

标签 java spring spring-mvc servlets

我正在尝试调试生产服务器上的问题,其中 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/

相关文章:

java - 我收到以下代码的 [I cannot be cast to java.lang.Integer] 错误。有没有其他方法可以做到这一点

java - 如何测量 i7 上的 java 性能?

Spring依赖注入(inject)带注释的Aspect

java - 如何在 Web 服务响应中将 json 响应作为 block 返回?

java - 强制导入 OSGi 包

java - 远程客户端收不到 UDP 数据包

java - JOOQ 映射问题(DataTypeException)

java - 在 Spring Boot 项目上创建名称为 'entityManagerFactory' 的 bean 时出错

spring-mvc - 我可以在Spring 4 MVC项目中使用Stylus和/或Jade吗?

java - Spring 3 验证不起作用