如何将Postman中带Raw body的API请求转换为AJAX请求
错误原因
- 微软OAuth2令牌接口不支持
application/json格式的请求体,仅接受application/x-www-form-urlencoded格式,你当前配置的请求头类型错误。 data字段格式错误,不应该将url编码字符串包裹在对象中,也不要保留字符串前后的多余空格。- 接口返回的鉴权令牌字段为
access_token,你代码中写的data.token无法正确取值。
正确实现方案
方案1:让jQuery自动序列化表单参数(推荐)
不需要手动设置请求头,jQuery会自动处理编码和请求头配置:
$.ajax({ type: 'POST', url: 'https://login.microsoftonline.com/***/oauth2/token', data: { grant_type: 'client_credentials', client_id: '替换为你的client_id', client_secret: '替换为你的client_secret', resource: 'https://analysis.windows.net/powerbi/api' }, success: (data) => { console.log(data.access_token) }, error: (err) => { console.log('请求失败', err) } });
方案2:手动拼接url编码字符串
如果你要自己拼接参数,直接传入字符串即可:
$.ajax({ type: 'POST', url: 'https://login.microsoftonline.com/***/oauth2/token', headers: { "Content-Type": "application/x-www-form-urlencoded" }, data: "grant_type=client_credentials&client_id=***&client_secret=***&resource=https://analysis.windows.net/powerbi/api", success: (data) => { console.log(data.access_token) }, error: (err) => { console.log('请求失败', err) } });
安全提醒
客户端凭证模式的OAuth2请求需要用到client_secret,直接在前端代码中发送该请求会导致密钥泄露,建议将该请求逻辑迁移到后端服务实现。
内容的提问来源于stack exchange,提问作者Gangrel
相关产品推荐
相关产品推荐

