我正在开发基于Angular 6客户端和用于Web服务的ASP.NET Core WebAPI的Web应用程序。
目前(初始开发阶段),我有一个简单的体系结构,该体系结构由两个Web服务组成,一个Web服务管理身份验证和身份,另一个Web服务包含应用逻辑(业务逻辑,更新db等)。 / p>
我正在使用JWT Bearer令牌进行客户端身份验证。
我的身份验证服务一切正常,但是当我尝试调用应用程序服务时,我在Chrome浏览器控制台中收到此错误:
无法加载http://localhost:59207/api/Files/Upload:所请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不允许访问来源“ http://localhost:4200”。响应的HTTP状态码为500。
此错误之前还有另一个错误:
POST http://localhost:59207/api/Files/Upload 500(内部服务器错误)
在某种程度上,我得到的第二个错误是与内部服务器错误相关的吗?
我测试了来自Postman的POST呼叫,并且一切正常,没有服务器端错误,并且返回了我希望从服务中返回的数据。
我已经在ASP.NET Core中放置了有关CORS的所有知识。
名为“ ConfigureServices”的启动类方法包含,作为第一行:
services.AddCors(options =>
{
options.AddPolicy("AllowAll",
builder =>
{
builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
});
});
然后在“配置”方法中调用它:
app.UseCors("AllowAll");
我也将EnableCors属性放在每个控制器类上,如下所示:
[EnableCors("AllowAll")]
任何人都知道如何摆脱困境? 从我得到的结果来看,这就是打算使用CORS的方式,而且我已经使它在其他项目上以这种方式运行(但从未在ASP.NET Core 2中运行)。
提前谢谢
答案 0 :(得分:0)
这可能无法解决您的情况,但过去我经常遇到此问题。在Chrome
个请求的两个localhost
之间进行通话时,这是一个POST
问题。
尝试使用其他浏览器,看看它是否有效;如果是这样,您可以通过禁用Chrome
Security
chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security
希望这会有所帮助。