gpt4 book ai didi

angularjs - 405 WebAPI2 上不允许使用方法 (OWIN)

转载 作者:行者123 更新时间:2023-12-02 22:04:29 25 4
gpt4 key购买 nike

我正在为我的 API 设置 WebAPI 端点,但无法让 AngularJS 调用 PostRegister 方法正常工作。

webAPI 和 Angular 位于不同的站点上。

在 Startup.cs 上我有:

    public void Configuration(IAppBuilder app)
{
ConfigureOAuth(app);

var config = new HttpConfiguration();

WebApiConfig.Register(config);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
app.UseWebApi(config);

}

private void ConfigureOAuth(IAppBuilder app)
{
var oAuthServerOptions = new OAuthAuthorizationServerOptions
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString(Paths.TokenPath),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30),
Provider = Kernel.Get<IOAuthAuthorizationServerProvider>()
};
app.UseOAuthAuthorizationServer(oAuthServerOptions);

OAuthBearerOptions = new OAuthBearerAuthenticationOptions();
app.UseOAuthBearerAuthentication(OAuthBearerOptions);
}

然后在 Controller 上,我的方法设置为允许匿名:

    [AllowAnonymous]
public bool PostRegister(UserSignupForm form)
{
...
}

我还更新了 web.config:

 <system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>

在 Angular 方面,我进行了一个简单的 $http.post 调用:

    saveRegistration: function (registration) {
return $http.post(baseUrl + '/api/signup/register', registration).then(function (response) {
return response;
});
}

当使用 Postman 进行调用时,我得到了成功的响应,但是当从 Angular 进行相同的调用时,我得到了 405 错误。

405 Method Not Allowed

BitOfTech 示例站点正在发送相同的请求 header ,但能够获取 Access-Control-Allow-XXX header

enter image description here

我已更新我的代码以遵循 Token Based Authentication using ASP.NET Web API 2, Owin, and Identity

最佳答案

我最近也遇到了类似的问题。我为飞行前 OPTIONS 请求添加了 Controller 处理程序,它解决了问题。

[AllowAnonymous]
[Route("Register")]
[AcceptVerbs("OPTIONS")]
public async Task<IHttpActionResult> Register()
{
return Ok();
}

关于angularjs - 405 WebAPI2 上不允许使用方法 (OWIN),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28013696/

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