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

我使用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;

        }

牧羊人nacy
浏览 8581回答 3
3回答

幕布斯6054654

正如这篇文章所暗示的,chrome中的错误:Access-Control-Allow-Headers不允许Content-Type,只需将其他标头添加到您的web.config中,就像这样...<httpProtocol>&nbsp; <customHeaders>&nbsp; &nbsp; <add name="Access-Control-Allow-Origin" value="*" />&nbsp; &nbsp; <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />&nbsp; </customHeaders></httpProtocol>

胡子哥哥

很有可能是由于跨域请求,但可能并非如此。对我来说,我一直在调试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在其他文件中使用过,否则将收到讨厌的错误消息。有关更多信息,请参阅文档。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JQuery