javascript ajax json rest sharepoint

javascript - Sharepoint 2013 a través de REST API: error 403 prohibido al intentar crear un elemento



ajax json (3)

Lo más probable es que este error ocurra ya que el compendio de formularios ha expirado en la página.

En ese caso, podría adquirir un nuevo valor de resumen de formulario haciendo una solicitud POST a /_api/contextinfo endpoint.

Ejemplo

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 } }); }); }

Uso

//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)); });

Intento crear un elemento de lista simple con la api de resto en Sharepoint 2013. Mi código:

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

Al tratar de enviar los datos obtengo el error 403 "Prohibido".

"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." } }

  • Tengo todos los privilegios de administrador en este sitio y en la lista.

Encontré la solución hace unos días: olvidé agregar el formulario de resumen de solicitud al cuerpo. Debería tener la siguiente estructura;

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


Mi solución para el mismo problema:

<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>