Node.js 当使用来自不同本地主机端口的GET api时,本地主机上的Angular获取404-CORS问题?
自从我从内存中的WebAPI URL切换到数据库URL以来,Angular应用程序的JavaScript控制台给了我一个404错误Node.js 当使用来自不同本地主机端口的GET api时,本地主机上的Angular获取404-CORS问题?,node.js,angular,express,cors,Node.js,Angular,Express,Cors,自从我从内存中的WebAPI URL切换到数据库URL以来,Angular应用程序的JavaScript控制台给了我一个404错误 我已经使用localhost:3035在lite服务器上运行了angular应用程序/ 我在localhost:3039上运行了一个mongodb/nodejs/express数据库/ 我的angular应用程序使用内存中的web api url“api/loggerData”就可以“获取”了 有什么想法吗?是科尔斯吗?还有别的吗?我是否也需要在角度端配置li
- 我已经使用localhost:3035在lite服务器上运行了angular应用程序/
- 我在localhost:3039上运行了一个mongodb/nodejs/express数据库/
- 我的angular应用程序使用内存中的web api url“api/loggerData”就可以“获取”了
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);
}
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();
});
No collection
错误通常意味着您留下了一些相当于:
InMemoryWebApiModule.forRoot(InMemoryDataService)
在您的ngModule中,当您尝试发出“真正的”http请求时会受到干扰。因此,将其从您的ngModule中删除,您就可以开始了!:)
在此之后,您可能仍然会遇到CORS问题,但这将修复您当前遇到的错误:)
正如echonax所提到的,您应该使用完整的url,包括http:
private loggerUrl = 'http://localhost:3039/read/getall/'
No collection
错误通常意味着您留下了一些相当于:
InMemoryWebApiModule.forRoot(InMemoryDataService)
在您的ngModule中,当您尝试发出“真正的”http请求时会受到干扰。因此,将其从您的ngModule中删除,您就可以开始了!:)
在此之后,您可能仍然会遇到CORS问题,但这将修复您当前遇到的错误:)
正如echonax所提到的,您应该使用完整的url,包括http:
private loggerUrl = 'http://localhost:3039/read/getall/'
它应该是
private loggerUrl=http://localhost:3039/read/getall/';代码>如果@echonax解决方案不起作用,那么我敢打赌这是CORS问题。您必须将数据库服务器配置为接受CORS请求。@echonax-谢谢您的建议-我已经尝试过了,您看到的是我尝试键入url的多种方法之一,但很高兴知道包括“http://”是正确的方法。事实证明,AJT_82的答案解决了这个问题——在我研究这个问题时,我还没有看到任何人谈论过内存中的web api。谢谢大家again@victor-我尝试了多个CORS解决方案,但没有成功-其中一个留在上面的快速代码中。下面的答案解决了这个问题-内存中的web API应该是private loggerUrl=http://localhost:3039/read/getall/';代码>如果@echonax解决方案不起作用,那么我敢打赌这是CORS问题。您必须将数据库服务器配置为接受CORS请求。@echonax-谢谢您的建议-我已经尝试过了,您看到的是我尝试键入url的多种方法之一,但很高兴知道包括“http://”是正确的方法。事实证明,AJT_82的答案解决了这个问题——在我研究这个问题时,我还没有看到任何人谈论过内存中的web api。谢谢大家again@victor-我尝试了多个CORS解决方案,但没有成功-其中一个留在上面的快速代码中。下面发布的答案解决了这个问题-内存中的web api从app.module文件中删除内存中的web api导入解决了404错误-我已经上下查看了堆栈,还没有将其视为解决方案-感谢您的帮助!从app.module文件中删除内存中的web api导入解决了404错误-我已经上下查找了堆栈,但尚未将其视为解决方案-感谢您的帮助!