sharepoint - 由于跨源资源共享 (CORS),主机 Web 上的 SP.ClientContext 失败

标签 sharepoint cross-domain cors sharepoint-2013 angularjs-http

我开发的 SharePoint 托管应用程序(SharePoint 应用程序)出现问题。 SharePoint 版本为 2013。

应用程序网站是:http://app-12a34567bcde8f.sharepoint.local/sites/DEV/HelloWorld 主机网址为:http://dev.local/sites/DEV

示例脚本是用 JSOM 编写的:

var clientContext = new SP.ClientContext('http://dev.local/sites/DEV');
var contextSite = clientContext.get_site();
clientContext.executeQueryAsync(function(e) {
    console.log('Success', e);
}, function(e) {
    console.log('Error', e);
});

控制台中的信息消息。

SEC7118: XMLHttpRequest for http://dev.local/sites/DEV/_api/contextinfo required Cross Origin Resource Sharing (CORS).
SEC7119: XMLHttpRequest for http://dev.local/sites/DEV/_api/contextinfo required CORS preflight.

控制台中出现错误消息。

SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied.

控制台.日志结果:

"Error"
[object Object] {$1C_0: true, $1F_0: Object {...}, $1o_0: null, $1p_0: null, $1r_0: Object {...}, $1u_0: null, $1X_0: false, $29_0: "Javascript ...", $2A_0: null, $2I_0: false, $2N_0: 180000, $2T_0: null, $8_0: null, $F_0: Object {...}, $F_1: null, $N_1: Object {...}, $v_0: null, $w_0: "http://dev...", $x_0: null}

我无法理解这一点,因为 REST 和 SP.RequestExecutor 的方法也不起作用。 -1003 未为此应用的请求 URL http://dev.local 部署应用程序 Web。

示例:

var executor = new SP.RequestExecutor('http://dev.local');
executor.executeAsync({
    url: "http://dev.local/_api/search/query?querytext='*'&refinementfilters='contenttype:equals (\"SPFolder\")'",
    method: 'GET',
    headers: 'application/json; odata=verbose',
    success: function(a) {
        console.log('Finish', a);
    },
    error: function(data, errorCode, errorMessage) {
        console.log('Error', data, errorCode, errorMessage);
    }
});

jQuery 说“401 UNAUTHORIZED”:

$.ajax({
    crosDomain: true,
    url: "http://dev.local/_api/search/query?querytext='*'&refinementfilters='contenttype:equals (\"SPFolder\")'",
    success: function(e) {
        console.log('Success', e);
    },
    error: function(e) {
        console.log('Error', e);
    }, dataType:'json'
});

我只想执行一个搜索查询并正常使用 SP.ClientContext。

提前感谢您的帮助!

最佳答案

看看这篇文章:Access SharePoint 2013 data from add-ins using the cross-domain library 。或者,您可以尝试设置 Access-Control-Allow-Origin: *在托管 dev.local/sites/DEV 的 IIS 上。

关于sharepoint - 由于跨源资源共享 (CORS),主机 Web 上的 SP.ClientContext 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34750961/

相关文章:

javascript - 如何验证/保护/验证基于 JavaScript 的 POST 请求?

javascript - 简单的 CORS 不起作用(即使它应该)

sharepoint - IIS 7 httpruntime maxRequestLength 限制为 2097151

c# - 如何使用 AuthType.Kerberos 对 Active Directory 中的用户进行身份验证?

css - 检查未使用的 css 样式和覆盖率的工具?

javascript - XHR跨域限制的目的是什么?

javascript - JSON跨域错误

c# - Access-Control-Allow-Origin 在 header 请求 ASP.NET Web API 中出现两次

javascript - Microsoft Edge 阻止发送到同一专用网络 CIDR 中的 IP 的跨域请求

sharepoint - 如何更改 SharePoint 中表单库的默认 InfoPath 表单服务器 URL