Angular WithCredentials 不适用于 POST、PUT

MGD*_*ies 6 .net httpclient cors angular

我正在开发一个 Angular 网站:

\n\n

\xe2\x80\xa2 localhost/test 上的 .Net Framework 服务器

\n\n

本地主机上的 \xe2\x80\xa2 客户端:4200

\n\n

我的 cookie 身份验证工作正常,并且我的 GET 请求工作正常。

\n\n
   this.httpClient.get<Test>(\'dummyUrl\', { withCredentials: true });\n
Run Code Online (Sandbox Code Playgroud)\n\n

在服务器的 web.config 中,我有以下内容。

\n\n
    <add name="Access-Control-Allow-Credentials" value="true"/>\n    <add name="Access-Control-Allow-Origin" value="http://localhost:4200" />\n    <add name="Access-Control-Allow-Methods" value="*" />\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

鉴于此设置,我希望同样适用于 PUT 和 POST 请求。

\n\n
    this.httpClient.put(\'dummyUrl\', this.payload, { withCredentials: true });\n
Run Code Online (Sandbox Code Playgroud)\n\n

我由此收到 401 Unauthorized 错误。

\n\n
\n\n

我的调查

\n\n

我看到的请求方法是 OPTIONS,它告诉我这在飞行前失败,并且这个问题与 CORS 而不是 Angular 相关。我一直无法弄清楚我错过了什么。

\n\n

我将不胜感激任何指导。

\n

Aru*_*j R 1

尝试以下代码。

import { RequestOptions, Headers } from '@angular/http';

let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers, withCredentials: true });

this.httpClient.put('dummyUrl', this.payload, options);
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回答。RequestOptions 已被弃用,所以我觉得我应该避免它。为了调试,我还是尝试了它并得到了相同的 401 行为。 (2认同)