【发布时间】:2021-02-03 16:57:14
【问题描述】:
我想创建一个非常简单的带有 JSONP 响应的 HTTP 服务器 Java。
代码如下:
public static void main(String[] args) throws Exception {
HttpServer server = HttpServer.create(new InetSocketAddress(8500), 0);
HttpContext context = server.createContext("/test");
context.setHandler(Sample::handleRequest);
server.start();
System.out.println("Server started on port 8500");
}
private static void handleRequest(HttpExchange exchange) throws IOException {
JSONObject json = new JSONObject("{\"weight\":\"23400\"}");
exchange.getResponseHeaders().add("Access-Control-Allow-Origin", "*");
exchange.getResponseHeaders().add("Access-Control-Allow-Headers","origin, content-type, accept, authorization");
exchange.getResponseHeaders().add("Access-Control-Allow-Credentials", "true");
exchange.getResponseHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
exchange.getResponseHeaders().set("contentType", "application/json; charset=UTF-8");
exchange.sendResponseHeaders(200, json.toString().getBytes().length);
OutputStream os = exchange.getResponseBody();
os.write(json.toString().getBytes());
os.close();
}
和客户:
$(document).ready(function () {
$.ajax({
url: 'http://localhost:8500/test/',
type: "GET",
dataType: "jsonp",
data: { no: 120 },
contentType: 'application/json',
success: function (data) {
$('#txtWeight').val(data);
},
error: function (err) {
console.log( err);
}
});
});
我遇到的问题与 HTTP 处理程序有关。 Chrome 返回:
Cross-Origin Read Blocking (CORB) block cross-origin response http://localhost:8500/test/?callback=jQuery34109210173679568667_1603222391566&no=120&_=1603222391567 with MIME type text/plain
如果有问题,请您看看并告诉我吗?
【问题讨论】:
标签: java jsonp httpserver cross-origin-read-blocking