XMLHttpRequest无法加载http:// localhost:8089 / jquery。 Access-Control-Allow-Origin不允许使用null

时间:2013-10-24 11:55:58

标签: javascript jquery ajax google-chrome xmlhttprequest

我正在尝试使用chrome从jquery(ajax)中获取Web服务。但是,当我尝试调用webservice时,我遇到了错误,甚至没有到达服务器

Error :XMLHttpRequest cannot load http://tomohamm-t420:8089/jquery. Origin null is not allowed by Access-Control-Allow-Origin.

以下是我正在使用的ajax调用示例:     //将W / S-Request查询构建为String对象..

var id = '123';

var query = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://www.tibco.com/schemas/jQuerySample/jquery/Schema.xsd"';
query += '<soapenv:Header/';
query += '<soapenv:Body';
query += '<sch:EmpDetailsRequest';
query += '<sch:empID' + id + '</sch:empID';
query += '</sch:EmpDetailsRequest';
query += '</soapenv:Body';
query += '</soapenv:Envelope';

// set end point url..
var endpointUrl = 'http://tomohamm-t420:8089/jquery';

//ajax call to W/S..
$.ajax({
    url : endpointUrl,
    type : "POST",
    beforeSend : function(xhr) {
    xhr.setRequestHeader("SOAPAction", "/GetEmpByID");
},
data : query,
dataType : "xml",
contentType : "text/xml; charset=\"utf-8\"",
complete : function(xmldata,stat,response) {
    console.log("W/S-Response: "+xmldata.responseText);
},
success : function(data) {
    console.log('W/S Successful!');
},
error : function(textStatus, errorThrown) {
    console.log('W/S Failed!');
    console.log('Error Status :: ' +textStatus);
    console.log('Error Message :: ' +errorThrown);
}
});

我找到了避免这个问题的方法。那是我必须使用以下命令打开chrome: cd C:\ Program Files(x86)\ Google \ Chrome \ Application Chrome.exe --disable-web-security

但是在尝试打开我的应用程序的每台机器上都无法做到这一点。 那么有没有在jquery应用程序中包含这个设置,以便我可以直接打开chrome并运行它?

2 个答案:

答案 0 :(得分:3)

我猜你是从本地文件进行ajax调用,对吧?如果你想这样做,需要一些服务器端编码。

在您处理ajax请求的服务器端尝试此操作并发送响应,将Access-Control-Allow-Origin标头添加到HTTP响应并将值设置为*。这是您的信息的一段Java代码。

response.setHeader("Access-Control-Allow-Origin", "*")

答案 1 :(得分:1)

没有。如果您不控制端点,最好的办法是通过您自己的服务器代理请求,并添加适当的Access-Control-Allow-Origin标头。

相关问题