gpt4 book ai didi

java - 无法使用 jquery Ajax 从 Java HttpServer 获得响应

转载 作者:行者123 更新时间:2023-11-30 10:31:44 24 4
gpt4 key购买 nike

我有一个运行的 Java Http 服务器,它以 Hello World 响应。代码如下。

public class ScannerHttpService {

public static void startService() throws Exception {
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/jsp", new JspHandler());
server.setExecutor(null); // creates a default executor
server.start();
}

static class JspHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
String response = "Hello World";
//specify it before sendResponseHeaders()
t.getResponseHeaders().add("Content-Type", "text/plain; charset=" + StandardCharsets.UTF_8.name());
t.sendResponseHeaders(200, response.length());
System.out.println(t.getResponseHeaders().entrySet());
OutputStream os = t.getResponseBody();
os.write(response.getBytes(StandardCharsets.UTF_8));
os.close();
}
}
}

我想使用 ajax 调用此服务并在 jsp 页面的警告窗口中显示响应。我正在使用以下代码。

<%@page import="java.io.*" %>
<%@page import="java.net.*" %>
<%@page import="java.nio.charset.StandardCharsets" %>

<html>
<head>
<title>Service Verification</title>
<%--<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>--%>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script>
function getText(){
var response = '';
$.ajax({ type: "GET",
url: "http://example.com:8000/jsp",

success : function(text)
{
response = text;
},
error : function()
{
response = "Fail"
}
});

alert(response);
}
</script>
</head>
<body>
<form accept-charset="utf-8">
<h3>Click Ready!</h3>
<input type="submit" value="Ready" onclick="getText()"/>
</form>
</body>
</html>

我无法从服务器获得响应。它在浏览器中抛出以下错误。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://example.com:8000/jsp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). 1 (unknown)

我哪里做错了?我可以访问这两个代码。服务器和客户端都在同一个网络中。

编辑:按照@Brian bcr666 Ray 和@Sandeep 的建议,我添加了

t.getResponseHeaders().add("Access-Control-Allow-Origin", "*");

到java代码。它现在正在工作。

最佳答案

看起来 Ajax 调用源自一个 UI,该 UI 托管在服务器以外的某个其他域上。您可以在服务器上为 /jsp 端点启用 CORS,它应该可以工作。

按照这个:https://enable-cors.org/server.html

关于java - 无法使用 jquery Ajax 从 Java HttpServer 获得响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43064851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com