Web API 并不总是返回 JSONP 数据

Web API not always returning JSONP data

我一直在使用 SonarQube 网络 API 并发现了一个有趣的差异。对于某些 API 调用,将数据类型设置为 JSONP 以绕过 CORS 错误可以正常工作,并且 returns 数据为 JSONP,对于其他调用,数据只能返回as JSON 这是被禁止的,因为我正在发出跨域请求。我想知道这是我的错误还是故意的?

对于上下文,API 对 /api/resources 的调用可以用 JSONP 响应,但对 /api/issues/search 的调用不能。

      $.ajax({
        url: 'http://sonar.optum.com/api/resources?resource=IDWS-IdentificationWorkstation:master&metrics=coverage',
        method: 'GET',
        dataType: "jsonp"
      })

上面的AJAX调用成功并且returnsJSONP数据。

$.ajax({
        url: 'http://sonar.optum.com/api/issues/search?projectKeys=IDWS-IdentificationWorkstation:master',
        method: 'GET',
        dataType: "jsonp"
      })

这个 AJAX 调用没有。

Web api 端点的内部实现各不相同。在 SonarQube < 6.0 中,一些端点写在 ruby 中。甚至在 SonarQube 6.5 中,一些端点正在使用 protobuf 序列化 json,其他端点使用简单的 Stringbuilder。

根据内部实现,或多或少 "JSON features"。