【发布时间】:2019-06-21 14:31:51
【问题描述】:
我有一个小型演示应用:
- FE 上的角度 (http://localhost:4200/)
- BE 上的 ASP.Net Core (https://localhost:44333/)
从 FE 到 BE 的获取请求似乎工作正常。 但是 POST 请求抛出:
跨域请求被阻止:同源策略不允许读取位于https://localhost:44333/api/auth/login 的远程资源。 (原因:CORS 请求没有成功)
HTTP 工作正常。唯一的问题是 HTTPS。
Angular 服务如下所示:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { map } from 'rxjs/operators';
@Injectable()
export class AuthService {
baseUrl = 'https://localhost:44333/api/auth/';
constructor(private http: HttpClient) {
}
login(model: any) {
return this.http.post(this.baseUrl + 'login', model)
.pipe(
map((response: any) => {
const user = response;
if (user) {
localStorage.setItem('token', user.token);
}
}));
}
}
现在在 BE 方面允许任何来源:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseCors(x => x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
app.UseAuthentication();
app.UseMvc();
}
github 上提供的应用程序来源
dotnet 服务器控制台中的错误:
Connection id "0HLK56HC2M58N" request processing ended abnormally. System.IO.IOException: The decryption operation failed,查看内部异常。 ---> System.ComponentModel.Win32Exception:一个 处理证书时发生未知错误---结束 内部异常堆栈跟踪 --- 在 System.Net.Security.SslStreamInternal.ReadAsyncInternal[TReadAdapter](TReadAdapter 适配器,内存
1 buffer) at Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal.AdaptedPipeline.ReadInputAsync(Stream stream) at System.IO.Pipelines.PipeCompletion.ThrowLatchedException() at System.IO.Pipelines.Pipe.GetReadResult(ReadResult& result) at System.IO.Pipelines.Pipe.ReadAsync(CancellationToken token) at System.IO.Pipelines.Pipe.DefaultPipeReader.ReadAsync(CancellationToken cancellationToken) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection.BeginRead(ValueTask1& 等待)在 Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication1 application) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync[TContext](IHttpApplication1 应用程序)信息:Microsoft.AspNetCore.Server.Kestrel[20] Connection id "0HLK56HC2M58O" 请求处理异常结束。 System.IO.IOException:解密操作失败, 见内部异常。 ---> System.ComponentModel.Win32Exception:一个 处理证书时发生未知错误---结束 内部异常堆栈跟踪 --- 在 System.Net.Security.SslStreamInternal.ReadAsyncInternal[TReadAdapter](TReadAdapter 适配器,内存1 buffer) at Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal.AdaptedPipeline.ReadInputAsync(Stream stream) at System.IO.Pipelines.PipeCompletion.ThrowLatchedException() at System.IO.Pipelines.Pipe.GetReadResult(ReadResult& result) at System.IO.Pipelines.Pipe.ReadAsync(CancellationToken token) at System.IO.Pipelines.Pipe.DefaultPipeReader.ReadAsync(CancellationToken cancellationToken) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection.BeginRead(ValueTask1& 等待)在 Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication1 application) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync[TContext](IHttpApplication1 应用程序)信息:Microsoft.AspNetCore.Server.Kestrel[20] Connection id "0HLK56HC2M58Q" 请求处理异常结束。 System.IO.IOException:解密操作失败, 见内部异常。 ---> System.ComponentModel.Win32Exception:一个 处理证书时发生未知错误---结束 内部异常堆栈跟踪 --- 在 System.Net.Security.SslStreamInternal.ReadAsyncInternal[TReadAdapter](TReadAdapter 适配器,内存1 buffer) at Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal.AdaptedPipeline.ReadInputAsync(Stream stream) at System.IO.Pipelines.PipeCompletion.ThrowLatchedException() at System.IO.Pipelines.Pipe.GetReadResult(ReadResult& result) at System.IO.Pipelines.Pipe.ReadAsync(CancellationToken token) at System.IO.Pipelines.Pipe.DefaultPipeReader.ReadAsync(CancellationToken cancellationToken) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection.BeginRead(ValueTask1& 等待)在 Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication1 application) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync[TContext](IHttpApplication1 应用程序)信息:Microsoft.AspNetCore.Server.Kestrel[20] Connection id "0HLK56HC2M58P" 请求处理异常结束。 System.IO.IOException:解密操作失败, 见内部异常。 ---> System.ComponentModel.Win32Exception:一个 处理证书时发生未知错误---结束 内部异常堆栈跟踪 --- 在 System.Net.Security.SslStreamInternal.ReadAsyncInternal[TReadAdapter](TReadAdapter 适配器,内存1 buffer) at Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal.AdaptedPipeline.ReadInputAsync(Stream stream) at System.IO.Pipelines.PipeCompletion.ThrowLatchedException() at System.IO.Pipelines.Pipe.GetReadResult(ReadResult& result) at System.IO.Pipelines.Pipe.GetReadAsyncResult() at System.IO.Pipelines.Pipe.DefaultPipeReader.GetResult(Int16 token)1 应用程序)在 Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync[TContext](IHttpApplication`1 申请)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication
【问题讨论】:
-
您遇到异常了吗?错误中间件清除所有头(包括 CORS),因此当发生异常时,没有头并且请求将失败并显示该消息
-
嗨@Tseng,调用没有达到控制器中的实际操作。当邮递员使用令牌获得正确响应时,该操作本身似乎正在发挥作用
-
这并没有回答问题:您的应用程序在通话过程中是否有任何异常?是的? => 修复异常,调用不会在浏览器中引发 CORS 错误。检查您的日志(或控制台的输出)
-
@Tseng 已将错误添加到帖子中
标签: c# angular asp.net-web-api asp.net-core angular6