gpt4 book ai didi

java - 使用ajax v java 获取请求

转载 作者:太空宇宙 更新时间:2023-11-04 13:37:41 24 4
gpt4 key购买 nike

我正在编写一个简单的 Web 应用程序,它仅使用自定义 header 完成一个 GET 请求。当我尝试使用 ajax 发出请求时,它给了我一个跨域错误,如下所示:

 No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://localhost:8080' is therefore not allowed access.

当我使用自定义 header 在 Java 中发出相同的请求时,它工作得完全正常。

    public static String executeGET() {
String response = "";
try {
URL url = new URL("http://....");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");


//set custom headers

con.setRequestProperty("header1", "2.0");
con.setRequestProperty("header2", "sellingv2");
con.connect();

InputStreamReader reader = new InputStreamReader(con.getInputStream());
Scanner scanner = new Scanner(reader);
while (scanner.hasNext()) {
response += scanner.next();
}
scanner.close();
con.disconnect();
}
catch (Exception ex) {
ex.printStackTrace();
}
return response;
}

为什么这在 Java 中有效,而在 AJAX 中无效?

最佳答案

此请求适用于 Java,不适用于 AJAX,因为 AJAX 是从 Web 浏览器中调用的。 Web 浏览器强制执行“同源策略”,以防止前端脚本执行可能的恶意 AJAX 请求。您的 Java 应用程序不受此限制,因此它可以很好地发出请求。 Access-Control-Allow-Origin header 可用于覆盖此功能,但您的服务器未配置为使用它。最有可能的情况是 URL 字符串中的协议(protocol)、主机或端口与托管前端文件的内容不匹配。如果您将 url 更改为相对路径,它应该可以工作。

关于java - 使用ajax v java 获取请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31546854/

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