加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularJs – 405方法不允许在WebAPI2(OWIN)

发布时间:2020-12-17 08:06:47 所属栏目:安全 来源:网络整理
导读:我正在为我的API设置一个WebAPI端点,但是无法将我的AngularJS调用到我的PostRegister方法工作。 webAPI和Angular位于不同的站点上。 在Startup.cs我有: public void Configuration(IAppBuilder app) { ConfigureOAuth(app); var config = new HttpConfigur
我正在为我的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);
    }

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

[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>

在角度方面,我做了一个简单的$ http.post调用:

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

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

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

我已经更新了我的代码以跟随Token Based Authentication using ASP.NET Web API 2,Owin,and Identity

最近我有类似的问题。我为飞行前的OPTIONS请求添加了控制器处理程序,解决了这个问题。
[AllowAnonymous]
[Route("Register")]
[AcceptVerbs("OPTIONS")]
public async Task<IHttpActionResult> Register()
{
    return Ok();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读