Sharepoint 由于跨源资源共享(CORS),主机web上的SP.ClientContext失败
我开发的SharePoint托管应用程序(SharePoint应用程序)有问题。 SharePoint版本为2013年 应用程序网站是: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'
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(跨域)使查询正常工作。这个网站上有一个例子。