仅在Firefox上对HttpClient调用的奇怪行为

时间:2018-09-27 09:14:41

标签: angular angular-httpclient

我在Angular 6应用程序中遇到了一个怪异的问题,并且调用了后端函数。基本上,我想将一个对象添加到列表并将其保存到数据库。直到今天,当我在Firefox上检测到一个奇怪的行为(在Chrome和Opera上都可以运行)时,它一直运行良好。

要将对象保存到数据库,应用程序调用此方法:

 newPolicyObject(listId : number, object : any, objectType : string) {
    let url = `${ConfigService.settings.appURL}/policy-r__ipobjs/policy-r__ipobj/${listId}`;

    return this.httpClient
        .post(url, JSON.stringify(object))
        .pipe(catchError(this.handleError));
}

在服务器日志上,我可以看到请求已正确完成:

[2018-09-27T10:51:29.165] [INFO] http - 127.0.0.1 - - "OPTIONS /policy-r__ipobjs/policy-r__ipobj/7 HTTP/1.1" 204 0 "" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
[2018-09-27T10:51:29.258] [INFO] http - 127.0.0.1 - - "POST /policy-r__ipobjs/policy-r__ipobj/7 HTTP/1.1" 200 194 "http://localhost:4200/dashboard/policy" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"

它将对象保存到数据库,因此可以正常工作。但是,在Firefox上,我可以在控制台上看到此错误(由西班牙语翻译而成,因此英语会有一些不同):

Blocked cross origin request: The same origin policy doesn't allow reading of remote resources on http://localhost:3000/policy-r__ipobjs/policy-r__ipobj/7. (Reason: CORS request failed).

并且我可以在Firefox的“网络”标签上看到意外的GET请求:

Firefox network request

在Chrome或Opera上执行相同的操作即可正常工作。另外,我在应用程序的其他地方都没有看到此错误。我也尝试在不同的计算机上,将后端更改为生产服务器,结果是相同的。

编辑

这是OPTIONS请求的响应:

OPTIONS response

任何线索可能是什么原因?

非常感谢,

1 个答案:

答案 0 :(得分:0)

该问题与Angular或HttpClient模块无关。它与Firefox处理DnD事件的方式有关。显然,Firefox将拖动的对象视为链接,因此当我将其放入容器中时,它试图打开它。要解决此问题,我要做的就是在[a-zA-Z]+事件处理程序上添加以下行:

drop