是否可以使用url中的端口号执行HTTP POST请求?
这是罚款
$http.post('http://localhost/httpPost.json', data);
但是,这是行不通的
$http.post('http://localhost:8081/httpPost.json', data);
是否可以使用url中的端口号执行HTTP POST请求?
这是罚款
$http.post('http://localhost/httpPost.json', data);
但是,这是行不通的
$http.post('http://localhost:8081/httpPost.json', data);
是的,它可以使用在AngularJS请求的端口号。所以问题不在这里。
难道你对“不工作”更精确一点?
检查您的浏览器控制台(Chrome中为F12,如果您在Firefox上安装了Firebug,也是F12)。可能会在此控制台中显示错误消息。
我怀疑跨源策略阻止您获取httpPost.json。如果不是从您试图提取数据的地方进行调用(例如,如果您从文件系统或从8081上运行的另一台服务器打开浏览器),则会发生这种情况。
AngularJS Docs for $resource表示“如果您使用的是带有端口号的URL,则会受到尊重。”但是该声明仅在版本1.2.0rc1之后有效,该版本是一个全新的版本,具有突破变化(source)。
周围有此错误的几种方法:
// named parameter
$resource('http://example.com:8081', {
'8081': ':8081'
});
// named parameter
$resource("http://example.com:port", {
port: ':8081'
});
// escaped
$resource('http://example.com:8081\:8081');
挑选你的毒药。 但是,如果您不能更改代码中的每个$资源URL,还有另一种方法。您可以通过更改angular-resource.min中的一行代码来修复错误。我在Google Group post中描述了这个过程,我在下面粘贴了这个过程:
下载angular-resource.js并像这样编辑它。按照patch,你必须用这个代替行348:
if (!(new RegExp("^\\d+$").test(param)) && param && (new RegExp("(^|[^\\\\]):" + param + "(\\W|$)").test(url))) {
就是这样。只需将文件托管在您自己的Web服务器上,即可享受功能,就像它从未打破。 8-)
控制台没有显示任何错误。我正在给Mule ESB发送POST请求,其中HTTP设置为入站端点,其地址设置为localhost:8081/httpPost.json。 Mule安装在我的应用程序运行的同一个系统上。 – BKM
为什么你需要指定端口,如果它没有工作? –