当角度应用程序呼叫休息服务时,为什么端口号被切断

luk*_*paw 5 rest angularjs

我有休息服务:

http://localhost:3000/api/brands
Run Code Online (Sandbox Code Playgroud)

当我从网络浏览器测试它时效果很好.

我在角度服务中使用它:

var motoAdsServices = angular.module('motoAdsServices', ['ngResource']);

motoAdsServices.factory('Brand', ['$resource', function($resource) {
    return $resource('http://localhost:3000/api/:id', {}, {
      query: {
        method: 'GET',
        params: {
          id: 'brands'
        },
        isArray: true
      }
    });
  }]);
Run Code Online (Sandbox Code Playgroud)

当它被调用时我有错误,因为在reqest URL中我没有端口号:

Request URL: http://localhost/api/brands
Run Code Online (Sandbox Code Playgroud)

为什么端口数字被削减?角切呢?

Angular doc中写道:

参数化的URL模板,其参数前缀为:in/user /:username.如果您使用的是带有端口号的URL(例如http://example.com:8080/api),则会受到尊重.

UPDATE

我使用角度版本1.0.8(感谢@KayakDave供你注意),但Angular doc适用于版本1.2.

Bro*_*Bro 10

它有一个冒号,因此被剥离,有点像:id.如果你逃避它,你应该没问题.试试吧http://localhost\:3000/api/:id.您可能会在路线或其他地方再次遇到此问题.如果发生变化,这个行为就会出现问题.

更新: http://localhost\\:3000/api/:id

  • 我使用双反斜杠转义端口号并且它可以工作.它是来自"问题"链接的解决方案.现在我有了:Access-Control-Allow-Origin不允许使用Origin`http:// localhost:8000`.但问题来自我的问题已经解决:) (4认同)