用户个人资料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
});
答案 0 :(得分:0)
尝试将cache: false
添加到ajax选项中。在你的网址中他们是一个额外的'
。
请试试这个。让我知道它是否有帮助
$.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 });
}
}
这是双方制定成功交叉原始请求的正确方法