Sharepoint 请求摘要值 cross-domain
Sharepoint request digest value cross-domain
我正在 NodeJS 和 ExpressJs 上构建一个网络应用程序,我试图通过 Sharepoint REST 将文档上传到 Sharepoint Online 库 Api。
我能够验证、创建和更新列表项。我正在使用 node-sp-auth
进行身份验证并使用 express-request
进行 http 请求。
为了访问 Sharepoint REST api,我在 header.
中使用 FormDigestValue
Header:
Headers['Content-Type'] = 'application/json;odata=verbose';
Headers['X-RequestDigest'] = FormDigestValue;
Headers['Accept'] = "application/json;odata=verbose";
Headers['X-HTTP-Method'] = "POST";
当我尝试 create/update 在自定义列表中列出项目时,工作正常。但是当我尝试上传文档时,我收到以下错误:
body: '{"error":{"code":"-1, Microsoft.SharePoint.SPException","message":
{"lang":"en-US","value":"There is no app context to execute this request."}}}' } }
我用于上传的url:
siteurl + "/_api/SP.AppContextSite(@TargetSite)/web/lists/getByTitle(@TargetLibrary)/RootFolder/Files/add(url=@TargetFileName,overwrite='true')?" +
"@TargetSite='" + siteurl + "'" +
"&@TargetLibrary='" + libraryName + "'" +
"&@TargetFileName='" + fileName + "'";
post请求:
request.post({
url: url,
type: "POST",
headers: uploadHeaders,
binaryStringRequestBody: true,
body: fileData,
})
知道我做错了什么吗?
对 post 使用此格式:
url: url,
type: 'POST',
data: fileData,
processData: false,
headers: {
'Accept':'application/json;odata=verbose',
'X-RequestDigest': digest,
'Content-Length': fileData.byteLength
}
如果您还没有 RequestDigest,请调用 _api/SP.AppContextSite(@TargetSite)/contextinfo
我正在 NodeJS 和 ExpressJs 上构建一个网络应用程序,我试图通过 Sharepoint REST 将文档上传到 Sharepoint Online 库 Api。
我能够验证、创建和更新列表项。我正在使用 node-sp-auth
进行身份验证并使用 express-request
进行 http 请求。
为了访问 Sharepoint REST api,我在 header.
中使用FormDigestValue
Header:
Headers['Content-Type'] = 'application/json;odata=verbose';
Headers['X-RequestDigest'] = FormDigestValue;
Headers['Accept'] = "application/json;odata=verbose";
Headers['X-HTTP-Method'] = "POST";
当我尝试 create/update 在自定义列表中列出项目时,工作正常。但是当我尝试上传文档时,我收到以下错误:
body: '{"error":{"code":"-1, Microsoft.SharePoint.SPException","message":
{"lang":"en-US","value":"There is no app context to execute this request."}}}' } }
我用于上传的url:
siteurl + "/_api/SP.AppContextSite(@TargetSite)/web/lists/getByTitle(@TargetLibrary)/RootFolder/Files/add(url=@TargetFileName,overwrite='true')?" +
"@TargetSite='" + siteurl + "'" +
"&@TargetLibrary='" + libraryName + "'" +
"&@TargetFileName='" + fileName + "'";
post请求:
request.post({
url: url,
type: "POST",
headers: uploadHeaders,
binaryStringRequestBody: true,
body: fileData,
})
知道我做错了什么吗?
对 post 使用此格式:
url: url,
type: 'POST',
data: fileData,
processData: false,
headers: {
'Accept':'application/json;odata=verbose',
'X-RequestDigest': digest,
'Content-Length': fileData.byteLength
}
如果您还没有 RequestDigest,请调用 _api/SP.AppContextSite(@TargetSite)/contextinfo