如何在 HTTP 403 响应中获取自定义错误响应文本

Posted

技术标签:

【中文标题】如何在 HTTP 403 响应中获取自定义错误响应文本【英文标题】:How to Get the Custom Error Response Text in the HTTP 403 Response 【发布时间】:2020-01-14 13:38:36 【问题描述】:

我使用以下方法发出 AJAX 请求:

function getJSON(url, callback) 
    var xhr = new XMLHttpRequest();
    xhr.open("GET", url, true);
    xhr.responseType = "json";
    xhr.onload = function() 
        if (xhr.status === 200) 
            callback(null, xhr.response);
         
        else 
            /*var errorObj =  status: xhr.status, statusText: xhr.statusText ;
            callback(errorObj, xhr.response);*/
            callback(xhr.status, xhr.response);
        
    ;
    xhr.send();
;

如果状态为 403,我必须从服务器获取自定义响应文本。xhr.response 为空,尽管我可以在 Chromium 调试器窗口的“网络”选项卡中看到自定义错误消息。如何访问自定义响应文本?

【问题讨论】:

可能是responseText 属性? 试试 responseText。 (如果对方基于此返回不同的响应,也可能删除 responseType) else 分支中将responseType 设置为text?很久没用XHR了…… 我在成功分支中使用了 JSON.parse(xhr.response)。谢谢你们的帮助。 【参考方案1】:

试试这个:

  if (xhr.status === 200) 
            callback(null, xhr.response);
         else if(xhr.status === 403)
            callback(xhr.status, "not found =(");
         
        else 
            /*var errorObj =  status: xhr.status, statusText: xhr.statusText ;
            callback(errorObj, xhr.response);*/
            callback(xhr.status, xhr.response);
        

【讨论】:

【参考方案2】:

xhr.responseText 应该是诀窍

【讨论】:

嗨,欢迎来到堆栈溢出。为了得到一个有用的答案,这个反应需要扩展。解释为什么这是问题的答案。

以上是关于如何在 HTTP 403 响应中获取自定义错误响应文本的主要内容,如果未能解决你的问题,请参考以下文章

.NET Core授权失败如何自定义响应信息?

如何在 OAuth2 资源服务器中设置自定义 403 响应?

如何在 azure 函数 http 触发器中触发失败,并带有自定义错误响应

在 HTTP 标头或响应正文中休息错误消息?

允许 quarkus-oidc 自定义 403 的响应正文

django自定义错误响应