为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用jQuery在其他端口上发送AJAX请求?

/ 猿问

如何使用jQuery在其他端口上发送AJAX请求?

慕少森 2019-11-14 14:18:22

我需要将AJAX请求发送到端口8080,例如,在其中运行守护程序的端口。


查看完整描述

3 回答

?
慕哥9229398

您不能POST跨域,子域或端口号信息。但是,如果您可以同时访问守护程序和请求站点,则可以使用JSONP 。如果需要返回数据,则daemon需要支持callback查询参数并以正确的格式返回它。


将信息传递给守护程序:


$.getJSON('http://domain.com:8080/url/here?callback=?', {

  key: 'value',

  otherKey: 'otherValue'

}, function(data){

     // Handles the callback when the data returns

});

现在,只需确保您的守护程序可以处理该callback参数。例如,如果callback=mycallback守护程序的返回(唯一写入页面的内容)应如下所示:


对于键/值对:


mycallback( {'returnkey':'returnvalue', 'other':'data' });

对于数组:


mycallback( [1,2,3] );

如果没有JSONP或类似机制,则无法使用jQuery进行跨域通信。


查看完整回答
反对 回复 2019-11-14
?
慕仰0522570

这违反了“同源起点”政策。即使使用相同的域,也不能使用其他端口。


您可以按照Doug的建议使用JSONP 。


否则,作为另一个可能的解决方法,您可以设置一个非常简单的反向代理(如果使用Apache,则使用mod_proxy)。这将允许您在AJAX请求中使用相对路径,而HTTP服务器将充当任何“远程”位置的代理。


在mod_proxy中设置反向代理的基本配置指令是ProxyPass。您通常按以下方式使用它:


ProxyPass     /ajax/     http://www.localhost:8080/

在这种情况下,您将/ajax/test.xml使用jQuery进行请求,但实际上服务器将通过充当http://www.localhost:8080/test.xml内部代理来实现此目的。


如果使用的是IIS,则可能要使用托管融合URL重写器和反向代理来设置反向代理。


查看完整回答
反对 回复 2019-11-14
?
慕丝7291255

即使您将其放在相同的盒子上,只是端口不同,这也算作一个不同的来源。


如果您主要针对FireFox 3.5及更高版本等新的浏览器,则可以尝试Access-Control在其他端口中向应用程序添加标头,并允许从默认应用程序池调用。有关访问控制标头的信息可以在这里找到:https : //developer.mozilla.org/en/HTTP_access_control


IE也实现了它(同样,为什么要使用其他的ACTIVEX控件呢?):http : //blogs.msdn.com/ie/archive/2009/01/14/completing-access-control-support-for-xdomainrequest .aspx和http://msdn.microsoft.com/zh-CN/library/cc288060(VS.85).aspx


查看完整回答
反对 回复 2019-11-14

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信