2

我想使用 ajax 在 APIM 1.10 调用令牌。

我试过这个:

$(function() {
  $.ajax({
    url:'https://localhost:9443/token',
    type: 'POST',
    dataType: 'json',
    contentType: 'application/json',
    data:{
      'grant_type':'client_credentials'
    },
    headers:{
    'Authorization': 'Basic Q3dLYmJybWhDUnJpMVJlMDIycWp0UGtxWUlrYTpjYzZQMkVFOEVJRDNqSWRSN2ZnRUoyUDU2ajRh',
   },
   success:function(e){
      $('#token').html(e);
    }
  });
});

但什么也没收到。只是一个空的选项请求。

API 管理器显示:

    [2016-03-30 14:48:40,340] DEBUG - headers http-incoming-1 >> OPTIONS /token HTTP/1.0
    [2016-03-30 14:48:40,340] DEBUG - headers http-incoming-1 >> X-Forwarded-Host: <My host>
    [2016-03-30 14:48:40,340] DEBUG - headers http-incoming-1 >> X-Forwarded-Server: <My Host>
    [2016-03-30 14:48:40,340] DEBUG - headers http-incoming-1 >> X-Forwarded-For: <My IP>
    [2016-03-30 14:48:40,340] DEBUG - headers http-incoming-1 >> Host: <My Host> 
    [2016-03-30 14:48:40,340] DEBUG - headers http-incoming-1 >> Connection: close
    [2016-03-30 14:48:40,341] DEBUG - headers http-incoming-1 >> User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:41.0) Gecko/20100101 Firefox/41.0
    [2016-03-30 14:48:40,341] DEBUG - headers http-incoming-1 >> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    [2016-03-30 14:48:40,341] DEBUG - headers http-incoming-1 >> Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3
    [2016-03-30 14:48:40,341] DEBUG - headers http-incoming-1 >> Accept-Encoding: gzip, deflate
    [2016-03-30 14:48:40,341] DEBUG - headers http-incoming-1 >> Origin: null
    [2016-03-30 14:48:40,341] DEBUG - headers http-incoming-1 >> Access-Control-Request-Method: POST
    [2016-03-30 14:48:40,341] DEBUG - headers http-incoming-1 >> Access-Control-Request-Headers: authorization,content-type
    [2016-03-30 14:48:40,341] DEBUG - headers http-incoming-1 >> Pragma: no-cache
    [2016-03-30 14:48:40,341] DEBUG - headers http-incoming-1 >> Cache-Control: no-cache
    [2016-03-30 14:48:40,386] DEBUG - headers http-incoming-1 << HTTP/1.0 200 OK
    [2016-03-30 14:48:40,386] DEBUG - headers http-incoming-1 << Access-Control-Request-Headers: authorization,content-type
    [2016-03-30 14:48:40,386] DEBUG - headers http-incoming-1 << Host: <My Host>
    [2016-03-30 14:48:40,386] DEBUG - headers http-incoming-1 << X-Forwarded-Server: <My Host>
    [2016-03-30 14:48:40,386] DEBUG - headers http-incoming-1 << Origin: null
    [2016-03-30 14:48:40,386] DEBUG - headers http-incoming-1 << Access-Control-Request-Method: POST
    [2016-03-30 14:48:40,386] DEBUG - headers http-incoming-1 << Cache-Control: no-cache
    [2016-03-30 14:48:40,387] DEBUG - headers http-incoming-1 << Pragma: no-cache
    [2016-03-30 14:48:40,387] DEBUG - headers http-incoming-1 << X-Forwarded-Host: <My Host>
    [2016-03-30 14:48:40,387] DEBUG - headers http-incoming-1 << Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3
    [2016-03-30 14:48:40,387] DEBUG - headers http-incoming-1 << Allow: POST
    [2016-03-30 14:48:40,387] DEBUG - headers http-incoming-1 << Accept-Encoding: gzip, deflate
    [2016-03-30 14:48:40,387] DEBUG - headers http-incoming-1 << X-Forwarded-For: <my ip>
    [2016-03-30 14:48:40,387] DEBUG - headers http-incoming-1 << Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    [2016-03-30 14:48:40,387] DEBUG - headers http-incoming-1 << Date: Wed, 30 Mar 2016 17:48:40 GMT
    [2016-03-30 14:48:40,387] DEBUG - headers http-incoming-1 << Server: WSO2-PassThrough-HTTP
    [2016-03-30 14:48:40,387] DEBUG - headers http-incoming-1 << Connection: Close
    [2016-03-30 14:48:40,389] DEBUG - wire << "HTTP/1.0 200 OK[\r][\n]"
    [2016-03-30 14:48:40,390] DEBUG - wire << "Access-Control-Request-Headers: authorization,content-type[\r][\n]"
    [2016-03-30 14:48:40,390] DEBUG - wire << "Host: <my host name>[\r][\n]"
    [2016-03-30 14:48:40,390] DEBUG - wire << "X-Forwarded-Server: <my host>[\r][\n]"
    [2016-03-30 14:48:40,390] DEBUG - wire << "Origin: null[\r][\n]"
    [2016-03-30 14:48:40,390] DEBUG - wire << "Access-Control-Request-Method: POST[\r][\n]"
    [2016-03-30 14:48:40,390] DEBUG - wire << "Cache-Control: no-cache[\r][\n]"
    [2016-03-30 14:48:40,390] DEBUG - wire << "Pragma: no-cache[\r][\n]"
    [2016-03-30 14:48:40,390] DEBUG - wire << "X-Forwarded-Host: <My Host NAME>[\r][\n]"
    [2016-03-30 14:48:40,390] DEBUG - wire << "Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3[\r][\n]"
    [2016-03-30 14:48:40,390] DEBUG - wire << "Allow: POST[\r][\n]"
    [2016-03-30 14:48:40,390] DEBUG - wire << "Accept-Encoding: gzip, deflate[\r][\n]"
    [2016-03-30 14:48:40,390] DEBUG - wire << "X-Forwarded-For: <My computer IP>[\r][\n]"
    [2016-03-30 14:48:40,391] DEBUG - wire << "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8[\r][\n]"
    [2016-03-30 14:48:40,391] DEBUG - wire << "Date: Wed, 30 Mar 2016 17:48:40 GMT[\r][\n]"
    [2016-03-30 14:48:40,391] DEBUG - wire << "Server: WSO2-PassThrough-HTTP[\r][\n]"
    [2016-03-30 14:48:40,391] DEBUG - wire << "Connection: Close[\r][\n]"
[2016-03-30 14:48:40,391] DEBUG - wire << "[\r][\n]"

有人知道我该怎么做吗?

谢谢,

埃利泽特拉哈诺

4

1 回答 1

2

这里的问题是内容类型。根据文档,内容类型应该是 application/x-www-form-urlencoded并且您还需要删除 json 数据类型。通过上述更改,ajax 代码应如下所示

$(function() {
  $.ajax({
    url:'https://localhost:9443/oauth2/token',
    type: 'POST',
    contentType: 'application/x-www-form-urlencoded',
    data:{
      'grant_type':'client_credentials'
    },
    headers:{
    'Authorization': 'Basic Q3dLYmJybWhDUnJpMVJlMDIycWp0UGtxWUlrYTpjYzZQMkVFOEVJRDNqSWRSN2ZnRUoyUDU2ajRh',
   },
   success:function(e){
      $('#token').html(e);
    }
  });
});
于 2016-03-30T18:31:00.927 回答