【问题标题】:XMLHttpRequest error No 'Access-Control-Allow-Origin' header is present on the requested resourceXMLHttpRequest 错误请求的资源上不存在“Access-Control-Allow-Origin”标头
【发布时间】:2026-01-26 16:50:01
【问题描述】:

我正在使用 Java Restfull Webservice,它在 postgres SQL 中转储数据。 Java WebService 功能完美运行。功能如下所示

    @Path("/db")
public class DBOperaions {

    @POST
    @Path("/insert")    
    @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    public String InsertDBData(@PathParam("hname") String hname,
            @PathParam("hdates") String hdates,
            @PathParam("hremark") String hremark,
            @PathParam("isDelete") boolean isDelete,
            @PathParam("created_date") String created_date,
            @PathParam("updated_date") String updated_date) {

  //Data Dumping Code
    }
    }

现在我正在尝试从 Jquery Ajax 访问此功能,如下所示

var obj = { hname: $("#txtRuleName").val(), hdates: $("#txtRuleDates").val(), hremark: $("#txtRuleRemark").val(), isDelete: false, created_date: 'CURRENT_TIMESTAMP', updated_date: 'CURRENT_TIMESTAMP' };
    $.ajax({
        type: "POST",
        contentType: "application/json",
        dataType: "json",                
        xhrFields: {
            withCredentials: true
        },          
        url: "http://localhost:8015/PostGresTestDB/rest/db/insert",           
        data: JSON.stringify(obj),        
        success: function (data, textStatus, jqXHR) {
            alert('Data Inserted successfully...');
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert('generateReportFromMR:Error in processing!');
            //alert(jqXHR);
        }
    });

Webservice 运行在带有http://localhost:8015/PostGresTestDB/rest/db/insert 的tomcat 服务器上 和运行在http://localhost:42229/index.html上的网页

我收到以下错误

XMLHttpRequest 无法加载 http://localhost:8015/PostGresTestDB/rest/db/insert。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 Origin 'http://localhost:49927'。

我尝试了 CORS,但没有成功。

谁能告诉我我到底想为此做什么?

【问题讨论】:

    标签: java jquery web-services postgresql


    【解决方案1】:

    您可以尝试使用“jsonp”作为请求的数据类型。通过使用它,您需要在 javascript 中指定一个回调函数,该函数将包含解析 json 响应的实现。 $.ajax 函数的 'jsonpCallback' 选项中设置的值必须与您将在 javascript 中实现的单独回调函数同名。您无需在 $.ajax 的“成功”属性中编写解析代码,而是在回调函数中执行此操作。您还需要修改 Java 源代码中的数据转储代码,方法是在实际编写响应之前首先使用与您在“jsonpCallback”中指定的回调函数同名的字符串包装 JSON 响应。

    【讨论】:

    【解决方案2】:

    正如贾斯汀所说,jsonp 可以解决问题。但是,它并不适用于所有情况,因为您必须遵循 jsonp 格式。如果您有权访问服务器代码,一种解决方案是将服务器配置为允许您的域。将允许原点设置为 * 以允许所有原点。此链接可能会有所帮助:CORS on Tomcat

    【讨论】:

      最近更新 更多