使用jquery的UserProfile REST API在谷歌浏览器中不起作用

时间:2016-07-29 19:30:48

标签: jquery google-chrome office365-restapi

用户个人资料REST API调用在Google Chrome中无效

以下代码: -

$.ajax({
  url: "http://<site url>/_api/sp.userprofiles.peoplemanager
    /getpropertiesfor(@v)?@v='i%3A0%23.f%7Cmembership%7Cuser%40domain.onmicrosoft.com'",
  type: "GET",
  headers: { "accept": "application/json;odata=verbose" },
  success: successHandler,
  error: errorHandler
});

1 个答案:

答案 0 :(得分:0)

尝试将cache: false添加到a​​jax选项中。在你的网址中他们是一个额外的'

请试试这个。让我知道它是否有帮助

$.ajax({
  url: "http://<site url>/_api/sp.userprofiles.peoplemanager
    /getpropertiesfor(@v)?@v='i%3A0%23.f%7Cmembership%7Cuser%40domain.onmicrosoft.com",
  type: "GET",
  cache: false,
  dataType: "json",
  headers: { "accept": "application/json;odata=verbose" },
  success: successHandler,
  error: errorHandler
});

已更新

请参阅此link,因为它会说明您获得403 Forbidden status code的原因

总结:

  

403 Forbidden回复。它的   永久性,它与我的应用程序逻辑紧密相关,而且更具体   回应比401.

     

服务器正在接收403响应   你,“我很抱歉。我知道你是谁 - 我相信你说的是谁 - 但是   您只是没有权限访问此资源。也许如果你   很好地问系统管理员,你会获得许可。但是,求求您   在你的困境发生变化之前,不要再打扰我了。“

在你的情况下可能是

您无权在给定资源上执行请求的操作。

Cross Origion AJAX

    var accesstoken = localStorage.getItem('myApiSession');

    var authHeaders = {};
    if (accesstoken) {
        authHeaders.Authorization = 'Bearer ' + accesstoken;
    }

    $.ajax({
        url: 'http://localhost:13838' + link,
        type: "POST",
        cache: false,
        headers: authHeaders,
        success: function (data) {
            //console.log(data);
        },
        error: function (xhr) {
            console.log(xhr);
        }
    });

在webApi中

[EnableCors(origins: "*", headers: "*", methods: "*")]
public class SearchController : ApiController
{
    public object Get(string str)
    {

        WebServiceBLL WebBLL = new WebServiceBLL(new NaqshaMaker2Entities());
        var stre = JsonConvert.SerializeObject(WebBLL.Search(str));

        return Json(new { result = stre }); 

    }

}

这是双方制定成功交叉原始请求的正确方法

相关问题