use*_*729 37 javascript ajax jquery cross-domain
我需要发送一个AJAX请求,例如,端口8080,守护进程在那里运行.
Dan*_*llo 41
这打破了同源政策.即使使用相同的域,也不能使用其他端口.
您可以像Doug建议的那样使用JSONP .
或者,作为另一种可能的解决方法,您可以设置一个非常简单的反向代理(如果您在Apache上,则使用mod_proxy).这将允许您在AJAX请求中使用相对路径,而HTTP服务器将充当任何"远程"位置的代理.
在mod_proxy中设置反向代理的基本配置指令是ProxyPass.您通常会按如下方式使用它:
ProxyPass /ajax/ http://www.localhost:8080/
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您将/ajax/test.xml使用jQuery 请求,但实际上服务器将通过充当http://www.localhost:8080/test.xml内部代理来为此服务.
如果您使用的是IIS,则可能需要使用Managed Fusion URL重写器和反向代理来设置反向代理.
Dou*_*ner 31
您无法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
});
Run Code Online (Sandbox Code Playgroud)
现在只需确保您的守护进程处理callback参数.例如,如果callback=mycallback守护进程的返回(写入页面的唯一内容)应如下所示:
对于键/值对:
mycallback( {'returnkey':'returnvalue', 'other':'data' });
Run Code Online (Sandbox Code Playgroud)
对于数组:
mycallback( [1,2,3] );
Run Code Online (Sandbox Code Playgroud)
如果您没有适当的JSONP或类似机制,则无法使用jQuery进行跨域通信.
| 归档时间: |
|
| 查看次数: |
63082 次 |
| 最近记录: |