0

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

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

下面是我正在使用的示例 ajax 调用: //Build W/S-Request query as String object..

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并运行它?

4

2 回答 2

3

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

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

response.setHeader("Access-Control-Allow-Origin", "*")
于 2013-11-07T02:33:49.327 回答
1

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

于 2013-10-24T11:59:59.413 回答