gpt4 book ai didi

使用 Spring 3.0 Rest Webservice 的 Jquery ajax 跨域策略问题

转载 作者:行者123 更新时间:2023-12-01 08:15:02 26 4
gpt4 key购买 nike

我们已经实现了生成 xml 响应的 Web 服务。

我在通过 jquery ajax 调用它时遇到问题。

如果我将相同的文件放在同一个容器中,我会得到正确的响应。这是因为跨域策略。

请建议我如何在 jquery ajax 中使用跨域策略?

我使用 tomcat 作为网络服务器。所有Web服务都部署在该服务器上。

下面是代码。

function doajaxcall() 
{
$.ajax({
url: "http://localhost:8080/mobile-services/rest/languages/",
type: "GET",
processdata: true,
dataType: "json",
contentType: "application/json;",
beforeSend: function () { },
headers :
{
"Content-Type" : "application/json",
"Accept" : "application/json",
"Access-Control-Allow-Origin":"http://192.168.0.1:8080/"
},
success: function (data)
{
alert('Data..'+data);
},
error: function (XMLHttpRequest, textStatus, errorThrown)
{
try
{
alert(JSON.stringify(XMLHttpRequest) + "\n" + textStatus + "\n" + errorThrown);
}
catch (ex) { alert("Exception occured.. "); }
finally { }
}
});

}

如果我从 header 中的同一容器运行此代码,我会得到 header 中的“Access-Control-Allow-Origin”:“http://192.168.0.1:8080/”。

如果我在容器之外运行它,我会得到

“访问控制允许来源”:空

请提出建议。

最佳答案

解决此问题。我已将 cors-filter-1.3.1.jar 添加到 webservices/web-inf/lib 中。目录。

下面是启用tomcat跨域访问的web.xml文件配置。

<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

将 spring 3.0 webservices 的响应类型从 xml 更改为 JSON。我正在使用以下代码片段从 Web 服务读取 JSON 数据。

$.getJSON('http://localhost:8080/mobile-services/rest/languages/',
function(data)
{
$("#lang_1").html(data.languages[0].language);
$("#lang_2").html(data.languages[1].language);
$("#lang_3").html(data.languages[2].language);
});

关于使用 Spring 3.0 Rest Webservice 的 Jquery ajax 跨域策略问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11156178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com