跨域请求不起作用

Cross domain requests not working

本文关键字:不起作用 请求      更新时间:2023-09-26

我有一个java服务,它使用xmlHttpRequest在javascript中被调用,并返回XML数据。它在IE 8之前运行良好。现在我们正在IE 11、chrome和mozilla中尝试它,它给出了500(内部服务器错误)。代码如下。

request = new XMLHttpRequest();
request.open('POST', SERVERHOSTNAME+"/XXXXXX/XXXXXX/XXXXX/XXXXXInsert");
request.send(req,300000);

在谷歌搜索后,我发现它与跨域请求有关,并使用了以下代码。

request.setRequestHeader("Access-Control-Allow-Origin", SERVERHOSTNAME);

将该行添加到上面的代码中。。现在我没有得到任何错误,也没有输出我的reponseText为null。。后来我试用了$.ajax代码如下:

$.ajax({
    url:url,
    type: "POST",
    data:req,
    dataType:"xml",
    crossDomain:true,
    success: function (response) {
        alert(response);
    },
    error:function(error1)
    {
        alert(error1);
    }
});

我也犯了同样的错误。。。请帮帮我。有一件事是我现在不能改变服务。。

实际上,应该设置标头的不是您。服务器应在响应中设置标头Access-Control-Allow-Origin: *

浏览器会看到您正在发送一个跨域请求。由于CSRF和XSS等跨域请求存在安全问题,浏览器会通过发送另一个请求并检查响应标头来检查服务器是否允许跨域请求。如果服务器没有,浏览器将显示一个错误。如果服务器这样做了,它会发送您的请求并得到响应。在你的情况下,我认为服务器没有在响应中设置标头。。

您可以联系服务器管理员,要求他们从服务器端设置该标头。否则,您可以尝试JSONP。将.ajax()与JSONP一起使用的基本示例?

帮助我的一行是添加

request = new XMLHttpRequest();
request.open('POST', SERVERHOSTNAME+"/XXXXXX/XXXXXX/XXXXX/XXXXXInsert");
request.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
request.send(req,300000);

我发现500错误不仅与跨域有关,甚至与其他事情有关。。

请尝试在后端调试代码。

在调用AJAX调用中URL引用的脚本时创建一个断点。我相信这会启发你的问题。

如果后端的脚本没有触发调试,那么AJAX调用或其他JS脚本中可能出现了问题。