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

Sharepoint 由于跨源资源共享(CORS),主机web上的SP.ClientContext失败,sharepoint,cross-domain,cors,sharepoint-2013,angularjs-http,Sharepoint,Cross Domain,Cors,Sharepoint 2013,Angularjs Http,我开发的SharePoint托管应用程序(SharePoint应用程序)有问题。 SharePoint版本为2013年 应用程序网站是:http://app-12a34567bcde8f.sharepoint.local/sites/DEV/HelloWorld 主机url为:http://dev.local/sites/DEV 示例脚本是用JSOM编写的: var clientContext = new SP.ClientContext('http://dev.local/sites/DEV'

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

应用程序网站是:
http://app-12a34567bcde8f.sharepoint.local/sites/DEV/HelloWorld
主机url为:
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.
控制台中的错误消息。

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.
Console.Log结果:

"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}
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);
    }
});
$.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'
});
我无法理解这一点,因为使用REST和SP.RequestExecutor的方法也不起作用。
-1003应用程序Web未为此应用程序的请求url部署http://dev.local.

示例:

"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}
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);
    }
});
$.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'
});
jQuery说“401未经授权”:

"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}
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);
    }
});
$.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


提前感谢您的帮助

看看这篇文章:。或者,您可以尝试在承载dev.local/sites/dev的IIS上进行设置。

我需要使用SP.ProxyWebRequestExecutorFactory(跨域)使查询正常工作。这个网站上有一个例子。