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"。
我一直在使用 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"。