2017-08-22 1 views
1

Ich versuche, Benutzer mit Scim-Service zu löschen.AJAX DELETE Methode nicht erlaubt

Wenn ich es durch SoapUI rufen und locken es funktioniert, aber wenn ich Ajax-Aufruf erstellen gibt es 405 Verfahren

nicht erlaubt

SOAPUI5

IP: https://localhost:9447//wso2/scim/Users/token_of_user_to_be_deleted

OAuth2 Token : my_token_for_oauth

Medientyp: application/json

ROTATION

curl -v -k --user Admin: admin https://localhost:9447/wso2/scim/Users/b228b59d-db19-4064-b637-d33c31209fae DELETE -X -H "Accept: application/json"

Diese beide arbeiteten und löschte den Benutzer.

AJAX DOESNT Arbeit für mich

  $.ajax({ 
        url: 'https://localhost:9447/wso2/scim/Users/token_of_user_to_be_deleted', 
        type: 'DELETE', 
        headers: { 'Content-Type':'application/json'}, 
        xhrFields: { 
         withCredentials: true 
        }, 

        beforeSend: function (request) { 
          request.setRequestHeader('Authorization', 'Bearer ' + that.oauth2.loadToken().access_token); 
        }, 


        success: function() { 
         console.log("success")       
        }, 
        error: function() { 
         console.log("error") 
        } 
       }); 

ERROR: Cross-Origin Resource Sharing (CORS) Filter: Nicht unterstützte HTTP-Methode: DELETE

+0

Wahrscheinlich muss der Webserver die entsprechende hinzufügen CORS-Header in der Antwort auf den Ajax-Aufruf. https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS Ajax-Anfragen können standardmäßig nicht alle die gleichen Dinge tun, die eine reguläre HTTP-Anfrage kann, hauptsächlich aus Sicherheitsgründen. Die Lösung besteht darin, die entsprechenden Antwortheader auf dem Server so einzurichten, dass dies möglich ist, und auch die erforderlichen HTTP-Methoden zuzulassen, normalerweise einschließlich OPTIONS. – ADyson

Antwort

4

Der Browser eine OPTIONS Anfrage getroffen hat, bevor Senden der eigentlichen Anfrage. Dieser Antrag enthält die anerkannten Methoden

Access-Control-Allow-Methods: GET, OPTIONS 

Ihr Server eine in der Options Antwort DELETE akzeptierte Methode nicht senden, damit Ihre Anfrage dieser Fehler führt.

Um dieses Problem zu beheben, müssen Sie die von Ihrem Server akzeptierten Methoden DELETE hinzufügen. in Ihren Server-Einstellungen

Die Option Anfrage wird nur über den Browser gesendet, da sie nur von den Browsern als Sicherheitsmaßnahme implementiert wird. curl/node/SOAPUI5 bestätigen diese Einschränkung nicht und ermöglichen Ihnen so, das zu bekommen, was Sie wollen. (Es sei denn, der Server auf andere Weise intern so konfiguriert ist, einige Headern zu verhindern)

aktualisieren

Als @jannis erwähnt, ist es erwähnenswert, dass die OPTIONS Anfrage die tatsächliche einem vorhergehenden aufgerufen wird eine preflight Anfrage und der Mechanismus im Allgemeinen heißt CORS.

Mehr erfahren Sie in Preflight-Anfragen (und CORS im Allgemeinen) lesen, indem Sie folgende Links:

+1

Es ist erwähnenswert, dass die OPTIONS-Anfrage vor der eigentlichen aufgerufen wird eine Preflight-Anfrage und der Mechanismus im Allgemeinen heißt CORS. Sie können mehr in Preflight-Anfragen (und CORS im Allgemeinen) lesen [hier] (https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests) und [hier] (https: // developer.mozilla.org/en-US/docs/Web/HTTP/Server-Side_Access_Control#Preflighted_requests) – jannis

+0

genial, ich werde es der Antwort hinzufügen. – Bamieh

+0

Vielen Dank für Ihre sehr hilfreiche Antwort @AhmadBamieh – dtechlearn

Verwandte Themen