当从不同的localhost PORT消耗GET api时,localhost上的Angular获得404 - CORS问题?

时间:2017-03-28 19:32:03

标签: node.js angular express cors

自从我从内存web-api网址切换到数据库网址后,Angular应用程序的JavaScript控制台就出现了404错误

JavaScript console output 404 error

  • 我使用localhost在lite-server上运行我的角应用程序:3035 /

  • 我在localhost上运行了一个mongodb / nodejs / express数据库:3039 /

  • 我的角度应用是“GET” - 使用内存中的web-api url'api / loggerData'

  • 就好了

有什么想法?是CORS吗?别的什么?我是否还需要在角度侧配置lite-server?

这是我的角度代码:

private loggerUrl = 'localhost:3039/read/getall/';
getLoggerData(): Promise <Dataset[]> {
    return this.http.get(this.loggerUrl)
        .toPromise()
        .then(response => response.json().data as Dataset[])   
        .catch(this.handleError);
}

另外,我尝试在数据库端实现一些没有影响任何内容的CORS解决方案 -

这里是我修改过的一些数据库代码:

var app = express();

app.use(function (req, res, next) {

//Website you wish to allow to connect
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3035');

// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 
'GET, POST, OPTIONS, PUT, PATCH, DELETE');

// Request headers you wish to allow
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');

// Set to true if you need the website to include cookies in the requests sent
// to the API (e.g. in case you use sessions)
res.setHeader('Access-Control-Allow-Credentials', true);

// Pass to next layer of middleware
next();
});

1 个答案:

答案 0 :(得分:4)

No collection错误通常意味着您已经悬挂了一些相当于:

的错误
InMemoryWebApiModule.forRoot(InMemoryDataService)
你的ngModule中的

,当你尝试发出“真正的”http请求时会干扰它。所以从你的ngModule中删除它,你应该好好去! :)

在此之后你可能仍会遇到CORS问题,但是这应该可以解决你得到的当前错误:)

正如echonax所提到的,你应该使用完整的URL,其中包含http:

private loggerUrl = 'http://localhost:3039/read/getall/'