JavaScript可以向web容器Servlet发送HTTP请求吗?
我有一个web应用程序,当前在网页中托管一个小程序。小程序连接到Tomcat Servlet并发送请求。如果我的解决方案可以在客户端使用Javascript而不是Java小程序,那么对于某些环境来说会更方便。但这需要Javascript向TomcatServlet发送POST 这些网页由同一个web服务器提供服务——实际上是同一个Tomcat实例。但是小程序向另一个Servlet发送请求 Javascript基本上需要定期查询Servlet,并根据响应调用Javascript函数 那可能吗JavaScript可以向web容器Servlet发送HTTP请求吗?,javascript,http,servlets,Javascript,Http,Servlets,我有一个web应用程序,当前在网页中托管一个小程序。小程序连接到Tomcat Servlet并发送请求。如果我的解决方案可以在客户端使用Javascript而不是Java小程序,那么对于某些环境来说会更方便。但这需要Javascript向TomcatServlet发送POST 这些网页由同一个web服务器提供服务——实际上是同一个Tomcat实例。但是小程序向另一个Servlet发送请求 Javascript基本上需要定期查询Servlet,并根据响应调用Javascript函数 那可能吗 如果
如果是这样,有关于如何开始的任何指针吗?是的,JavaScript可以向任意web服务器发送POST请求。如果您可以控制servlet,则可以通过设置
访问控制允许源属性来避免所有跨站点脚本限制
AJAX是web社区中的一个术语,指JavaScript+HTTP请求。我向MDN推荐这个。我也推荐
即使服务器设置正确,某些版本的Internet Explorer也会给您带来麻烦。下面是我用来覆盖所有浏览器的JS函数:
/**
* Wraps jQuery's AJAX, adds X-Domain support for IE
*/
function xDomainAJAX (url, settings) {
if ($.browser.msie && parseInt($.browser.version, 10) >= 8 && XDomainRequest) {
// use ms xdr
var xdr = new XDomainRequest();
xdr.open(settings.type, url + '?' + $.param(settings.data));
xdr.onprogress = function() {};
xdr.onload = function() {
settings.success(xdr.responseText);
};
xdr.onerror = settings.error;
xdr.send();
} else {
// use jQuery ajax
$.ajax(url, settings);
}
}
是的,JavaScript可以向任意web服务器发送POST请求。如果您可以控制servlet,则可以通过设置访问控制允许源属性来避免所有跨站点脚本限制
AJAX是web社区中的一个术语,指JavaScript+HTTP请求。我向MDN推荐这个。我也推荐
即使服务器设置正确,某些版本的Internet Explorer也会给您带来麻烦。下面是我用来覆盖所有浏览器的JS函数:
/**
* Wraps jQuery's AJAX, adds X-Domain support for IE
*/
function xDomainAJAX (url, settings) {
if ($.browser.msie && parseInt($.browser.version, 10) >= 8 && XDomainRequest) {
// use ms xdr
var xdr = new XDomainRequest();
xdr.open(settings.type, url + '?' + $.param(settings.data));
xdr.onprogress = function() {};
xdr.onload = function() {
settings.success(xdr.responseText);
};
xdr.onerror = settings.error;
xdr.send();
} else {
// use jQuery ajax
$.ajax(url, settings);
}
}
在服务器上支持“CORS”将允许您通过浏览器端脚本调用其他服务器
还有一些较旧的方法,如JSONP或在主页上的IFrame中的目标域上创建页面,并通过window.PostMessage/IFrame name在两个页面之间进行通信
如果您不需要响应,POST或GET可以执行到任何域。在服务器上支持“CORS”,将允许您通过浏览器端脚本调用其他服务器
还有一些较旧的方法,如JSONP或在主页上的IFrame中的目标域上创建页面,并通过window.PostMessage/IFrame name在两个页面之间进行通信
如果您不需要响应,POST或GET可以对任何域执行。这绝对是可能的。我建议使用jQuery,因为它在一个易于使用的函数中具有以下功能:。
请注意,此链接有使用$.post()和$.ajax()的示例。两者都是有效的,$.post只是$.ajax的简写版本
注意,在这两个示例中,您都为它提供了一个回调函数来处理响应。这绝对是可能的。我建议使用jQuery,因为它在一个易于使用的函数中具有以下功能:。
请注意,此链接有使用$.post()和$.ajax()的示例。两者都是有效的,$.post只是$.ajax的简写版本
请注意,在这两个示例中,您都为它提供了一个回调函数来处理响应。听起来像是跨站点脚本编写。我不确定您为什么强调“不同的servlet”。这里没有火箭科学。只需使用ajax就可以了。你不是说servlet实际上运行在不同的域上吗?例如,JavaScript在foo.com上运行,servlet在bar.com上运行?在这种情况下,跨站点脚本的答案确实适用。否则,只适用于标准的ajax方法。对我来说,听起来像是跨站点脚本。我不确定你为什么强调“不同的servlet”。这里没有火箭科学。只需使用ajax就可以了。你不是说servlet实际上运行在不同的域上吗?例如,JavaScript在foo.com上运行,servlet在bar.com上运行?在这种情况下,跨站点脚本的答案确实适用。否则,只适用标准的ajax方法。