gpt4 book ai didi

javascript - 在 Web API Core 和 Angular JS 中启用 CORS

转载 作者:行者123 更新时间:2023-11-30 11:49:52 24 4
gpt4 key购买 nike

我在不同的本地主机上托管了一个 WEB API 核心,我正尝试通过 AngularJS $http 服务从我的 MVC 核心应用访问它。

这是我的 homeController.js

app.controller("homeController", function ($scope, $http) {

$scope.accessToken = "";
var serviceBase = "https://localhost:44351/";
var request = $http({
method: "post",
url: serviceBase + "api/token",
data:
{
username: "DemoUser",
password: "Password"
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',
'Access-Control-Allow-Origin':'*',
'Access-Control-Allow-Methods': 'GET, POST'
}
});
request.success(function (result) {
$scope.accessToken = result;
});
});

在 WEB API Core 的 Startup.cs 中启用跨源调用

public void ConfigureServices(IServiceCollection services)
{
...
services.AddCors();
...
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
..
app.UseCors(builder =>
builder.WithOrigins("https://localhost:44352/")
.AllowAnyHeader()
);
..
}

尽管如此,我仍然在 chrome 中收到此错误。

XMLHttpRequest cannot load https://localhost:44351/api/token. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://localhost:44352' is therefore not allowed access.

我可以从 Postman 客户端调用 api。我错过了任何步骤吗?请帮忙。

我为此所做的修复:

在WebAPI项目的web.config文件中

<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="https://localhost:xxxxx" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept, Cache-Control" />
<add name="Access-Control-Allow-Credentials" value="true" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
...

StartUp.cs

public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
// services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{ app.UseCors(builder =>
builder
.AllowAnyHeader()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
);}

Chrome 不允许我在 Access-Control-Allow-Origin 字段中使用 *。

还在 project.json 中添加了 "Microsoft.AspNetCore.Cors": "1.0.0"

感谢大家的帮助。我真的很菜鸟。

最佳答案

如果您希望在 Web API 核心端启用 CORS,请按照以下步骤操作-

首先,在project.json中添加依赖——"Microsoft.AspNetCore.Cors": "1.0.0",

然后像这样在 startup.cs 中启用 CORS-

app.UseCors(builder => {
builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
});

如果您想限制特定来源,那么您可以这样做-

app.UseCors(builder => builder.WithOrigins("example.com"));

您可以找到有关 CORS 的更多信息 here

看看这是否有帮助。

关于javascript - 在 Web API Core 和 Angular JS 中启用 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39785517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com