Angular 2发布请求两次

问题描述:

我有一个角度为2的应用程序,在我的服务中调用Web服务器两次,当它应该调用一次。Angular 2发布请求两次

在session.service.ts

createSession(sessionName:any) 
{ 
    return this._http.post(this._sessionUrl + "/create/"+sessionName.sessionName,{}).map((res: Response) => res) 
    .do(data => console.log('Session created')) 
    .catch(this.handleError); 
} 

和在组件

createSession(name: string): void { 
    this._sessionService.createSession(name).subscribe(
    () => this.RedirectToSessionPage(), 
    () => this.ShowError() 
    ); 

}

我已读

和尝试添加.publish()。引用计数()和.share(),但仍然要两次到服务器。有人知道如何解决它吗?

+0

不符合您发布的代码。发布一个plunkr来重现这个问题。 –

+1

您确定您没有被OPTIONS预检困惑吗? – jonrsharpe

+0

你创建了什么样的会话? –

正如@jonrsharpe所暗示的,听起来您似乎看到了预检OPTIONS请求和后续POST。 当从远程服务器访问数据(服务器与您的角度2前端不在同一地点)时使用预检。并决定如何为跨源请求访问服务器。 (CORS)

最简单的方法来检查这是怎么回事是通过您使用的任何浏览器的开发工具(对于Chrome按F12导航到网络选项卡,并观看您的http请求)。

这应该给你,如果它是一个选项,然后POST(CORS)或指示,如果你确实做相同的通话两次(在这种情况下,可能会需要一个plunkr!)

希望帮助,对不起如果这是显而易见的!

+0

另一种选择是使用第三方软件(如https://www.wireshark.org/)来监视网络流量以查看真正发生的情况。我同意它可能是预检请求(非常容易混淆:D) –

+0

谢谢,我今天会试试! – JonR