我已在_layouts文件夹下使用单个WebMethod创建了一个应用程序页面:
var siteurl = _spPageContextInfo.webAbsoluteUrl;
$.ajax({
type: "POST",
url: siteurl + "/_layouts/...",
data: '{server: "' + server + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert(response.d);
},
error: function (xhr, textStatus, error) {
alert(error);
}
});
我通过发布ajax请求来调用此方法:
public List<string> workers;
它工作得很好, 但要求已更改,因此我必须将页面的位置从_layouts更改为_admin(管理中心) 并将ajax post url更新为新的url, 但现在我收到以下错误:
此页面的安全验证无效。在Web浏览器中单击“返回”,刷新页面,然后再次尝试操作。
这似乎与安全有关,但我无法弄明白。
任何人都可以帮忙!
谢谢,
答案 0 :(得分:2)
经过长时间的调查和阅读文章,我发现有一些名为 SharePoint Form Digest 的东西,它负责SharePoint页面的安全验证, 你可以在这里阅读更多: http://www.jeanpaulva.com/index.php/2015/05/23/sharepoint-form-digest/
在这里: http://blog.repsaj.nl/index.php/2012/06/sp2010-solving-the-mysteries-around-form-digest/
并且为了使我的请求有效,我必须将“RequestDigest控件”的值添加到请求的标题中,如下所示:
headers: { "Accept": "application/json; odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"If-Match": "*"
}