Sharepoint管理中心Ajax发布到WebMethod返回此页面的安全验证无效

时间:2017-02-02 11:56:54

标签: javascript jquery ajax sharepoint

我已在_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浏览器中单击“返回”,刷新页面,然后再次尝试操作。

这似乎与安全有关,但我无法弄明白。

任何人都可以帮忙!

谢谢,

1 个答案:

答案 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": "*"
               }