使用Angular 4 http请求获取404错误

时间:2017-12-13 18:06:17

标签: angular

我的AngularJS4项目中有以下代码:

const url = "http://localhost:4151/test";
     this.http.get(url).toPromise()
         .then((r) => {
             console.log("SUCCESS", r);
         })
         .catch((e) => {
             console.error("ERR", e);
         });

在浏览器栏中键入URL时,URL工作正常,我在服务器端启用了CORS标头:

// Allow CORS
this.app.use(function(req: Request, res: Response, next: Function) {
   res.header("Access-Control-Allow-Origin", "*");
   res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
   next();
});

每当我从Angular应用程序调用服务器时,它都会返回404 - Not Found错误。

任何想法如何解决这个问题?

感谢。

3 个答案:

答案 0 :(得分:2)

如果有人在下面的问题之前找到了这个问题。

这就是问题所在: Angular4 giving 404 for json data that exists and is publicly serving

我曾使用该教程作为基础,并且仍然使用HttpClientInMemoryWebApiModule来拦截http调用。我评论了它,它工作正常。

...
// This needed to be commented out vvv
// import { HttpClientInMemoryWebApiModule } from "angular-in-memory-web-api";
// import { InMemoryDataService } from "./services/dataSvc/in-memory-data.service";

@NgModule({
    declarations: [
        AppComponent
    ],
    imports: [
        BrowserModule,
        FormsModule,
        MyRoutingModule,
        HttpClientModule,

        // The HttpClientInMemoryWebApiModule module intercepts HTTP requests
        // and returns simulated server responses.
        // Remove it when a real server is ready to receive requests.
        // This needed to be commented out vvv
        // HttpClientInMemoryWebApiModule.forRoot(
        //     InMemoryDataService, { dataEncapsulation: false }
        // )
    ],
    providers: [MessageService],
    bootstrap: [AppComponent]
})
export class AppModule { }

答案 1 :(得分:0)

对于有同样问题的人,我通过添加" @ ResponseBody"在我的后端春天RESTful方法。

答案 2 :(得分:0)

HttpClientInMemoryWebApiModule.forRoot(
  InMemoryDataService, { dataEncapsulation: false }
)

从app.module.ts文件中删除以上行。我想您把它放在了从文档中学习httpclient的项目部分中了