2015-09-07 40 views
7

を作成しようとしたとき、私はSharepointの2013年 上のREST APIの私のコードで、単純なリスト項目を作成しようとしています:Sharepointの2013:エラー403が禁断のアイテム

$.ajax({ 
    url: siteUrl + "/_api/web/lists/getByTitle('internal_Listname')/items", 
    type: "POST", 
    contentType: "application/json;odata=verbose", 
    data: JSON.stringify({ 
     '__metadata': { 
      'type': 'SP.Data.internal_ListnameListItem', 
     }, 
     'K1F1': k1f1Result, 
    }), 
    headers: { 
     "accept": "application/json;odata=verbose", 
     "X-RequestDigest": $("#__REQUESTDIGEST").val(), 
    }, 
    success: function (data) { 
     console.log("done"); 
    }, 
    error: function (err) { 
     console.log(JSON.stringify(err)); 
    } 
}); 

送信しようとしたとき私は403 "禁じられた"エラーを取得します。

"error":{ 
    "code":"-2130575251, Microsoft.SharePoint.SPException", 
    "message":{ 
     "lang":"en-US", 
     "value":"The security validation for this page is invalid and might be corrupted. Please use your web browser's Back button to try your operation again." 
    } 
} 
  • 私はこのサイトとリストの完全な管理者権限を持っています。フォームダイジェストががページ上を有効期限が切れてきたので、

答えて

1

は数日前に解決策を見つけた: を私は身体にフォームをダイジェスト要求を追加するのを忘れ。それは以下の構造を持つ必要があります。

<form runat="server"> 
    <SharePoint:FormDigest ID="FormDigest1" runat="server"></SharePoint:FormDigest> 
</form> 
10

ほとんどの場合、このエラーが発生します。

この場合、POST要求を/_api/contextinfoエンドポイントにすることで、新しいフォームダイジェスト値を取得できます。

function getFormDigest(webUrl) { 
    return $.ajax({ 
     url: webUrl + "/_api/contextinfo", 
     method: "POST", 
     headers: { "Accept": "application/json; odata=verbose" } 
    }); 
} 


function createListItem(webUrl, listName, itemProperties) { 
    return getFormDigest(webUrl).then(function (data) { 

     return $.ajax({ 
      url: webUrl + "/_api/web/lists/getbytitle('" + listName + "')/items", 
      type: "POST", 
      processData: false, 
      contentType: "application/json;odata=verbose", 
      data: JSON.stringify(itemProperties), 
      headers: { 
       "Accept": "application/json;odata=verbose", 
       "X-RequestDigest": data.d.GetContextWebInformation.FormDigestValue 
      } 
     }); 
    }); 
} 

使用

//Create a Task item 
var taskProperties = { 
    '__metadata': { 'type': 'SP.Data.WorkflowTasksItem' }, 
    'Title': 'Order approval' 
}; 

createListItem(_spPageContextInfo.webAbsoluteUrl, 'Workflow Tasks', taskProperties) 
.done(function (data) { 
    console.log('Task has been created successfully'); 
}) 
.fail(function (error) { 
    console.log(JSON.stringify(error)); 
}); 
0

同じ問題に私のソリューション:

<form id="form1" runat="server"> <!-- this make SP 2013 take it legit --> 
<div class="style1"> <!-- dont know what, but SP need it --> 
---your page usually a divs--- 
</div> 
</form> 
関連する問題