为了账号安全,请及时绑定邮箱和手机立即绑定

错误:Access-Control-Allow-Headers不允许请求标头字段

错误:Access-Control-Allow-Headers不允许请求标头字段

牧羊人nacy 2019-12-21 12:36:42
我使用vS2012创建了一个mvc4 Web API项目。我使用以下教程来解决跨域资源共享,“ http://blogs.msdn.com/b/carlosfigueira/archive/2012/07/02/cors-support-in-asp-net-web-api- rc-version.aspx”。它工作正常,并且我将数据从客户端成功发布到服务器。之后,为了在我的项目中实现Autherization,我使用了以下教程来实现OAuth2:“ http://community.codesmithtools.com/CodeSmith_Community/b/tdupont/archive/2011/03/18/oauth-2-0-for -mvc-two-legged-implementation.aspx”。这有助于我在客户端获取RequestToken。但是,当我从客户端发布数据时,出现错误, “ XMLHttpRequest无法加载http://。Access-Control-Allow-Headers不允许请求标头字段Content-Type。”我的客户端代码看起来像 function PostLogin() {    var Emp = {};                Emp.UserName = $("#txtUserName").val();                 var pass = $("#txtPassword").val();    var hash = $.sha1(RequestToken + pass);            $('#txtPassword').val(hash);    Emp.Password= hash;    Emp.RequestToken=RequestToken;    var createurl = "http://localhost:54/api/Login";    $.ajax({        type: "POST",        url: createurl,        contentType: "application/json; charset=utf-8",        data: JSON.stringify(Emp),        statusCode: {                200: function () {                $("#txtmsg").val("done");                                       toastr.success('Success.', '');                                         }                },        error:            function (res) {                                        toastr.error('Error.', 'sorry either your username of password was incorrect.');                            }        });    };我的api控制器看起来像    [AllowAnonymous]    [HttpPost]    public LoginModelOAuth PostLogin([FromBody]LoginModelOAuth model)    {        var accessResponse = OAuthServiceBase.Instance.AccessToken(model.RequestToken, "User", model.Username, model.Password, model.RememberMe);        if (!accessResponse.Success)        {            OAuthServiceBase.Instance.UnauthorizeToken(model.RequestToken);            var requestResponse = OAuthServiceBase.Instance.RequestToken();            model.ErrorMessage = "Invalid Credentials";            return model;        }
查看完整描述

3 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

正如这篇文章所暗示的,chrome中的错误:Access-Control-Allow-Headers不允许Content-Type,只需将其他标头添加到您的web.config中,就像这样...


<httpProtocol>

  <customHeaders>

    <add name="Access-Control-Allow-Origin" value="*" />

    <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />

  </customHeaders>

</httpProtocol>


查看完整回答
反对 回复 2019-12-21
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

很有可能是由于跨域请求,但可能并非如此。对我来说,我一直在调试API并将其设置Access-Control-Allow-Origin为*,但似乎最新版本的Chrome需要额外的标头。如果使用PHP,请尝试在文件前添加以下内容:


header("Access-Control-Allow-Origin: *");

header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");

确保您尚未header在其他文件中使用过,否则将收到讨厌的错误消息。有关更多信息,请参阅文档。


查看完整回答
反对 回复 2019-12-21
  • 3 回答
  • 0 关注
  • 8580 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信