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

使用jQuery调用Openiddict获取token失败,C#调用正常该如何解决?

问题核心原因整理

  • 请求格式不符合OAuth2规范:OpenIddict的/connect/token端点遵循标准OAuth2协议,仅支持application/x-www-form-urlencoded格式的请求体,不接收JSON格式参数。你的C#代码用FormUrlEncodedContent发送表单格式请求符合要求,但jQuery代码错误配置了contentType: 'application/json; charset=UTF-8',直接导致服务端无法解析参数。
  • 请求头配置错误:
    1. jQuery中配置请求头的正确字段是headers(复数),你写的header字段不会生效。
    2. Access-Control-Allow-Origin是服务端返回的响应头,不需要客户端主动在请求中携带,额外添加反而可能触发跨域预检失败。
  • 数据序列化逻辑错误:你直接传入JSON对象作为请求数据,配合错误的contentType配置,jQuery会把对象序列化为JSON字符串发送,和服务端要求的表单格式完全不匹配。

修正后的jQuery代码

var body = {
    grant_type: 'password',
    username: email,
    password: password
};
$.ajax({
    url: 'https://localhost:7000/connect/token',
    crossDomain: true,
    type: 'POST',
    dataType: 'json',
    // 移除自定义的contentType,jQuery会自动适配表单格式的contentType
    data: body,
    complete: function(result) {
        alert(result);
    },
    success: function(result) {
        alert(result + " OK!");
    },
    error: function(result) {
        alert(result + " CHYBA");
    },
});

Postman调用注意事项

Postman中新建POST请求,打开Body标签,选择x-www-form-urlencoded格式,然后填入grant_type、username、password三个参数即可,不要选择raw下的JSON格式发送。

如果调整后仍然存在跨域报错,需要在你的OpenIddict服务端配置对应客户端的跨域访问权限,添加前端访问地址到CORS允许列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:27:03