0

    Cors跨域问题

    2023.07.17 | admin | 130次围观

    运行程序debug以下就行了,后台程序报错,因为未对抛出的异常做任何处理,为了保护这些异常信息不被前端看到,你看到的就都会是这种500的错误,而且因为异常抛出的不会自动添加跨域的头,所以也会报跨域头的错误。所以建议就是:

    1、debug看抛出了什么异常服务器内部错误的状态码是,问题就能解决了;

    Cors跨域问题

    2、重写ExceptionFilterAttribute的OnException方法服务器内部错误的状态码是,对不同的exception返回不同的异常信息,比如文件不存在可以返回一个状态码为404的异常:

    public override void OnException(ExceptionContext context)
    {
        var exception = context.Exception;
        if (exception == null)// should never happen
        {
            return;
        }
        //todo: log the exception.
        context.Result = new ObjectResult(new { Message =         exception.Message });
        if (exception is KeyNotFoundException)
        {
            context.HttpContext.Response.StatusCode = 404;//Not Found
        }
        else if (exception is ArgumentException || exception is ArgumentNullException)
        {
            context.HttpContext.Response.StatusCode = 400;//Bad Request
        }
        else if (exception is NotImplementedException)
        {
            context.HttpContext.Response.StatusCode = 501; //Not Implemented
            context.Result = new ObjectResult(new { Message = "Not implemented." });
        }
        else if (exception is InvalidOperationException)
        {
            context.HttpContext.Response.StatusCode = 500;
        }
        else if (exception is MemberAccessException)
        {
            context.HttpContext.Response.StatusCode = 401;//Unauthorized
        }
        else// Other exception types you want to handle ... 
        {
    context.HttpContext.Response.StatusCode = 500;
    context.Result = new ObjectResult(new { Message = "An error has occured." });//Exceptions whose message should not be shown to users.
    }
    }                                

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论