在HTML页面上用JavaScript处理REST API的响应

前端开发 2026-07-09

使用通过JS发送请求以在简单的HTML页面上获取元数据的熟悉方法……

const getMangasWebMetaDataEvent = async () => {
    const script = document.createElement('script');
    script.src = WEB_DATA_SOURCE + '?callback=scriptWrapper';
    document.getElementsByTagName('head')[0].appendChild(script);
}

我注意到来自我的Spring Boot的“REST API”的响应:{"status":true, "status":"some data"} 以以下信息结束:

A resource is blocked by OpaqueResponseBlocking, please check browser console for details.

“REST API”的响应头如下:

[Content-Type:"application/jsonp;charset=UTF-8", Content-Length:"72", Date:"Tue, 28 Apr 2026 16:38:50 GMT", Keep-Alive:"timeout=60", Connection:"keep-alive"]

然而,我最喜欢的“广播电台”的元数据的响应在浏览器中并不会产生类似的响应。接收到的元数据由HTML页面的JavaScript处理,一切正常。 ({"return":"1","response":{"informationjson":{"status":"some data"}})

“radio station”的响应头如下:

[Date:"Tue, 28 Apr 2026 16:26:22 GMT", Content-Type:"application/jsonp", Transfer-Encoding:"chunked", Connection:"keep-alive", Server:"cloudflare", Set-Cookie:"\_sessionName=xxx; path=/; secure", Expires:"Thu, 19 Nov 1981 08:52:00 GMT", Cache-Control:"no-store, no-cache, must-revalidate", Pragma:"no-cache", cf-cache-status:"DYNAMIC", CF-RAY:"xxx"]

我应该如何通过“REST API”将其准备为JSONP,以便网站上的JavaScript在收到响应后能够处理它?

“REST API”简化方法:

    @Async
    @GetMapping(value = "/open/status", produces = "application/jsonp")
    public CompletableFuture<Callable<String>> handlerMethod()
    {
        return CompletableFuture.completedFuture(() -> {
            StatusDto statusDto = statusBuilder();
            ObjectMapper objectMapper = new ObjectMapper();
            return objectMapper.writeValueAsString(statusDto);
        });
    }

解决方案

你的API响应类型会导致浏览器抛出ORB异常,以保护你这个用户。请将响应类型从 application/jsonp 更新为 application/javascript

更多信息请参阅下列文章:本文 或者这个 Stack Overflow上的另一种解法。来自所链接文章的要点如下:

为了绕过同源策略,浏览器需要将请求返回的内容解释为脚本,因此响应的Content-Type应设置为 application/javascript

如果返回的内容是JSONP,但Content-Type是 application/json,浏览器将无法识别它并产生ORB(不透明响应阻塞)异常,提示 未在给定标识符的资源中找到数据

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章