java - 使用ajax v java 获取请求

标签 java ajax cross-domain

我正在编写一个简单的 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/

相关文章:

java - 如何从liferay中的portlet渲染url检索查询参数值?

java - java中的自定义bean验证

javascript - jQuery,数组问题

javascript - 获取跨域 iframe 的响应状态码?

javascript - 跨源 'Authorization' -header 与 jquery.ajax()

Java Minecraft 插件问题 - 不响应 if 语句?

java - 可以在基类函数中使用派生类吗

java - 使 REST 调用更加高效

jquery - 如何在ajax函数执行过程中显示加载图像?

javascript - JavaScript与Flash如何跨域通信?