You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署在GoDaddy的站点身份验证返回invalid_grant错误如何解决?

问题排查方案
  • 请求体格式配置缺失:OAuth 2.0 密码授权模式要求请求头Content-Type必须为application/x-www-form-urlencoded,本地开发服务器通常兼容未显式声明的请求,但GoDaddy托管的IIS环境对请求格式校验更严格,未声明格式时会无法正确解析请求体参数,导致服务端读取不到grant_type、用户名、密码等必填字段,返回invalid_grant。
    你需要在ajax请求配置中显式添加contentType参数,同时建议用$.param序列化请求体,避免序列化规则差异:
function Authorize() {
    let bearer = "Basic Q01JUzMwOERTMzA4OndlYkFQSQ=="
    var email = document.getElementById("email").value;
    var password = document.getElementById("password").value;
    var userNameAndPasswordFilled = (email != "" && password != "");
    if (!userNameAndPasswordFilled) {
        $("#formError").show('fast');
    }
    else {
        // 显式序列化请求体为urlencoded格式
        var bodyOfRequest = $.param({
            grant_type: "password",
            username: email,
            password: password
        });
        $.ajax({
            type: "POST",
            url: uriManager.access,
            // 显式声明请求体格式
            contentType: "application/x-www-form-urlencoded; charset=utf-8",
            beforeSend: function (request) {
                request.setRequestHeader("Authorization", bearer);
            },
            data: bodyOfRequest,
            success: function (response) {
                sessionStorage.setItem(programKeyWords.BearerToken, response.access_token);
                $('#LogonModal').modal('hide');
            },
            error: function (response) {
                $("#formError").show('fast');
            }
        });
    }
}
  • 客户端凭证与生产环境不匹配:你代码中硬编码的Basic认证凭证是本地调试时的客户端ID和密钥,部署到GoDaddy后,Web API配置的客户端校验规则可能已更新,或者共享主机环境下Web.config配置未正确生效,导致服务端校验客户端凭证失败,返回错误。你可以先解码Base64凭证核对生产环境Web API的OAuth客户端配置,确认凭证与生产配置一致。
  • 请求协议与路径不一致:GoDaddy托管默认开启HTTPS强制跳转,如果你前端配置的uriManager.access是HTTP地址,跳转HTTPS时POST请求体内容会丢失,导致服务端拿不到参数。请确认请求地址的协议与站点当前访问协议一致,优先使用相对路径避免协议、域名不匹配问题。
  • CORS与源校验未配置生产域名:本地调试时Web API的CORS规则通常允许localhost源,部署后你需要将www.luig.us添加到CORS允许源列表,同时确认OAuth服务端的请求源白名单已包含生产域名,否则请求会被拦截导致参数校验失败。
  • WAF拦截请求头:GoDaddy共享主机默认开启WAF防护,可能会拦截或篡改Authorization请求头,你可以到GoDaddy主机控制面板的安全设置中,临时关闭WAF测试请求是否正常,如果确认是WAF拦截,可以添加规则放行你的认证接口路径。

内容的提问来源于stack exchange,提问作者Franco Pettigrosso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:15:00