Javascript 如何使用jQuery在不同的端口上发送AJAX请求?
我需要向端口8080发送一个AJAX请求,该端口正在运行守护进程。您不能跨域、子域或端口号发布信息。但是,如果您可以访问守护进程和请求站点,则可以使用JSONP。如果需要返回数据,则Javascript 如何使用jQuery在不同的端口上发送AJAX请求?,javascript,jquery,ajax,cross-domain,Javascript,Jquery,Ajax,Cross Domain,我需要向端口8080发送一个AJAX请求,该端口正在运行守护进程。您不能跨域、子域或端口号发布信息。但是,如果您可以访问守护进程和请求站点,则可以使用JSONP。如果需要返回数据,则守护进程需要支持回调查询参数,并将其正确格式返回 将信息传递给守护进程: $.getJSON('http://domain.com:8080/url/here?callback=?', { key: 'value', otherKey: 'otherValue' }, function(data){
守护进程
需要支持回调
查询参数,并将其正确格式返回
将信息传递给守护进程:
$.getJSON('http://domain.com:8080/url/here?callback=?', {
key: 'value',
otherKey: 'otherValue'
}, function(data){
// Handles the callback when the data returns
});
现在只需确保守护进程处理回调
参数。例如,如果callback=mycallback
则守护进程的返回(写入页面的唯一内容)应如下所示:
对于键/值对:
mycallback( {'returnkey':'returnvalue', 'other':'data' });
对于阵列:
mycallback( [1,2,3] );
如果没有JSONP或类似的机制,就无法使用jQuery进行跨域通信。这打破了传统。即使使用同一域,也不能使用其他端口
您可以按照建议使用JSONP
或者,作为另一种可能的解决方法,您可以设置一个非常简单的(如果您在Apache上,则使用)。这将允许您在AJAX请求中使用相对路径,而HTTP服务器将充当任何“远程”位置的代理
在中设置反向代理的基本配置指令是ProxyPass。您通常会按如下方式使用它:
ProxyPass /ajax/ http://www.localhost:8080/
在本例中,您将使用jQuery请求/ajax/test.xml
,但实际上服务器将充当http://www.localhost:8080/test.xml
内部
如果您使用的是IIS,则可能需要使用来设置反向代理。这将被视为不同的源,即使您将其放在同一个框中,只是不同的端口 如果您主要针对FireFox 3.5及以上的新浏览器,您可以尝试在另一个端口向应用程序添加
访问控制
标题,并允许从默认应用程序池调用。有关访问控制标头的信息可在此处找到:
IE也实现了它(同样,在使用不同的ACTIVEX控件时,为什么会这样?):有没有一种通用的方法来替换
domain.com
?这种方法只能在生产中使用,因为我在开发环境中使用了localhost
。您应该能够使用'http://'+window.location.hostname+':8080/url'
来构建既可以在本地工作又可以在线工作的url。+1是一个非常好的答案。我回答了写着“废话废话”的罐装回答,你提供了一个非常可行的解决方案。谢谢你,丹尼尔!哦,代理将在服务器端引起额外的处理。所以我将选择jsonPI,这一天我一直在努力找出为什么在找到它之前我不能跨端口发布数据。谢谢,哥们。嘿,科尔斯呢?