跨域请求不起作用
Cross domain requests not working
我有一个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脚本中可能出现了问题。
相关文章:
- 为什么 AJAX POST 请求不起作用
- AJAX请求不起作用,除非使用alert()
- Ajax Post请求不起作用
- IE8 jquery ajax头请求不起作用
- jQuery点击功能在获取请求后不起作用
- 使用Javascript的Ajax请求在iPhone浏览器中不起作用
- JQuery AJAX请求不起作用
- Node.js cors请求-异步示例不起作用
- Ajax 对 JSON 的请求不起作用
- React JS js 中的 AJAX 请求不起作用
- 对 URL 的 JSON-P 请求不起作用
- Jquery ajax请求不起作用
- 带有ajax xml请求的Node js脚本不起作用
- Ajax请求三次都不起作用,然后就起作用了
- AngularJS http.jsonp请求.then和.success函数不起作用
- Jquery ajax发布请求不起作用
- 外部AJAX请求不起作用
- 对SOAP服务的Preflight OPTIONS请求不起作用
- 使用AJAX发出POST请求;不起作用
- 第二个ajax请求在移动浏览器上不起作用