web-dev-qa-db-ja.com

net :: ERR_INVALID_HTTP_RESPONSEエラーAngular 7

私は小さなWebアプリケーションに取り組んでおり、バックエンドとしてangular 7とasp.net core web apiを使用しています。angularでHTTPポストリクエストを作成しようとしています。私のサービスは文字列を返します(トークン)そしてそれを受け取ったら、アラートボックスに表示したいと思います。

Postmanを使用してサービスをテストしましたが、すべて正常に機能します。

ブラウザから、リクエストはコントローラのアクションメソッドに正常にマッピングされます。このメソッド本体にブレークポイントを設定しましたが、問題なくトークンを正常に返します。

しかし、httpclientはエラーを返します。

[object Object]

そして、ブラウザコンソールで私はこれを見ます:

POST https://localhost:44385/api/auth net::ERR_INVALID_HTTP_RESPONSE

2つのメソッドがあります(POSTGET)コンポーネントに挿入されたサービスクラス内。これらは次のようになります。

logIn(username: string, password: string) {

    const encodedCredentials = btoa(username + ':' + password);

    const httpOptions = {
        headers: new HttpHeaders({
            "Authorization": "Basic " + encodedCredentials,
            "Access-Control-Allow-Origin":"*"
        }),
        responseType: 'text' as 'text'
    };

    this.http.post(this.urlBase + 'auth', null , httpOptions)
    .subscribe(result => {
        alert(result);
    }, error => {
        alert(error); // [object Object]
    });
}

get(){
    return this.http.get(this.urlBase + 'auth', {responseType: 'text'});
}

何が問題になりますか?

更新:

HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: null, ok: false, …}
error: ProgressEvent
bubbles: false
cancelBubble: false
cancelable: false
composed: false
currentTarget: XMLHttpRequest {__zone_symbol__xhrSync: false, __zone_symbol__xhrURL: "https://localhost:44385/api/auth", __zone_symbol__loadfalse: null, __zone_symbol__errorfalse: null, __zone_symbol__xhrListener: ƒ, …}
defaultPrevented: false
eventPhase: 0
isTrusted: true
lengthComputable: false
loaded: 0
path: []
returnValue: true
srcElement: XMLHttpRequest {__zone_symbol__xhrSync: false, __zone_symbol__xhrURL: "https://localhost:44385/api/auth", __zone_symbol__loadfalse: null, __zone_symbol__errorfalse: null, __zone_symbol__xhrListener: ƒ, …}
target: XMLHttpRequest {__zone_symbol__xhrSync: false, __zone_symbol__xhrURL: "https://localhost:44385/api/auth", __zone_symbol__loadfalse: null, __zone_symbol__errorfalse: null, __zone_symbol__xhrListener: ƒ, …}
timeStamp: 80234.59999999614
total: 0
type: "error"
__proto__: ProgressEvent
headers: HttpHeaders
headers: Map(0) {}
lazyUpdate: null
normalizedNames: Map(0) {}
__proto__: Object
message: "Http failure response for (unknown url): 0 Unknown Error"
name: "HttpErrorResponse"
ok: false
status: 0
statusText: "Unknown Error"
url: null
__proto__: HttpResponseBase

更新2:

郵便配達員へのリクエスト:

enter image description here


enter image description here

更新3:トークンを数回取得しようとすると、投稿要求が成功する場合と失敗する場合があることが示されました...

enter image description here

13
public public

ASP.NET Core 2.2では、Windowsシナリオ用にIIS内で実行される新しいサーバーをリリースしました。実行中の問題は次のようになります。 https://github.com/ aspnet/AspNetCore/issues/4398

XMLHttpRequestを送信するとき、204のステータスコードを返すプリフライトOPTIONS要求があります。これは、IISサーバーによって誤って処理され、クライアントに無効な応答を返しました。

ASP.NET Coreアプリケーションで、今すぐ回避策を試してください。

app.Use(async (ctx, next) =>
{
  await next();
  if (ctx.Response.StatusCode == 204)
  {
    ctx.Response.ContentLength = 0;
  }
});

Configureメソッドの先頭。

これは、ASP.NET Coreの次のパッチリリースでも修正されます。パッチがリリースされたらフォローアップします。

編集:最新リリース(2.2.1)は、この問題に対処する必要があります: https://dotnet.Microsoft.com/download/dotnet-core/2.2 。問題が解決するかどうか試してみてください。

19
Justin Kotalik

問題の場所を突き止めました。サーバー側にあります。 ASP.NET Core 2.2を使用しましたか? 2.1にダウングレードした後、ようやく機能しました!

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0"/>
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.0" PrivateAssets="All" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.0" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
  </ItemGroup>
</Project>

しかし、その理由はわかりません。変更されたのは、1つのヘッダーServerヘッダーのみです。 Microsoft-IIS/10.(2.2)からKestrel(2.1)に変更されました

4

ドットネットコアバージョンの背後にある問題。ドットネットコア2.2.101の場合、問題があります。最新バージョン、つまり2.2.102を変更すると、問題が解決します。同様に、最も古いバージョンのdotnet core <2.2.101を入手した場合、問題は解決します。

0
Wafa Abbas