【问题标题】:SharePoint 2013 API jQuery.Ajax Access DeniedSharePoint 2013 API jQuery.Ajax 访问被拒绝
【发布时间】:2022-02-01 07:33:00
【问题描述】:

我正在尝试一些简单的方法 - 从 SharePoint 2013 列表中检索列表信息。但是,当处理 jQuery Ajax 时,我的访问被拒绝。我尝试使用 headers 对象和 beforeSend 函数设置标题,但没有成功。这是我的 jQuery.Ajax:

$.ajax({
        headers: { // also tried with Authentication
            "Authorization": someBasicCryptedCred,
            "Accept": "application/json; odata=verbose"
        },
        url: "http://spSiteCollection/_api/web/lists/getbytitle('MyList')/items",
        type: "GET",
        success: SuccessProcess,
        error: ErrorProcess
    });

我的应用程序是一个简单的 MVC 移动应用程序

我正在关注这些文档(以及来自 MSDN 的其他文档,但不能发布超过 2 个链接):

http://msdn.microsoft.com/en-us/library/jj870858.aspx http://msdn.microsoft.com/en-us/library/jj163228.aspx

【问题讨论】:

  • 您是在不同的域上拥有这个吗?闻起来像跨源问题
  • sharepoint 应用是否在同一台服务器上?也许你遇到了same origin policy
  • 是的,我的应用程序和 SharePoint 服务器都位于同一台服务器上。另外,我添加了 $.support.cors = true;在加载页面时,否则我没有运输。

标签: javascript jquery ajax sharepoint-2013


【解决方案1】:

也许您需要表单摘要值,您可以使用 jQuery 获取:

$('#__REQUESTDIGEST').val();

您可以通过 API REST 调用获得它,使用 /_api/ContextInfo 并检索一个 JSON 对象,其中包含除表单摘要值之外的其他许多字段。

http://<site url>/_api/contextinfo

问候

【讨论】:

    【解决方案2】:

    我在调用中没有看到 Form Digest 值,这可能是原因吗?

    X-RequestDigest = 表单摘要值

    【讨论】:

    • msdn.microsoft.com/en-us/library/… 这似乎是一种方法,但是当我尝试发送一个“虚拟”请求来检索表单摘要值时,我再次被拒绝访问 - URL 是 spSiteCollection/_api/web/lists/getbytitle('MyList')/…,也是尝试使用 _api/web/lists/contextinfo 和其他一些组合但没有成功。
    • user2225566,谢谢指导。我已经设法通过向 REST 服务的 contextinfo 入口点发出虚拟 POST 请求,然后从响应中读取 X-RequestDigest 值来解决这个问题。
    【解决方案3】:

    基本上你在做什么,看起来你正在从你的应用程序网站访问跨站点集合数据,所以请通过 "AppManifest.xml" 文件为你的应用程序提供适当的权限。就是这样,你就完成了。

    【讨论】:

      猜你喜欢
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多