2017-08-22 20 views
1

scimサービスでユーザーを削除しようとしています。ajax DELETEメソッドが許可されていません

私はそれが動作SOAPUIを通してそれを呼び出すとカールが、私はそれがIP

SOAPUI5

を許可されていない405の方法返し呼び出すAJAX作成: https://localhost:9447//wso2/scim/Users/token_of_user_to_be_deleted

のOAuth2トークンを: my_token_for_oauth

メディアタイプ:アプリケーション/ JSON

CURL

はカール-v -k --user管理者:管理者がhttps://localhost:9447/wso2/scim/Users/b228b59d-db19-4064-b637-d33c31209fae -H "同意する:アプリケーション/ JSONを" DELETE -X

この両方働いていましたユーザーを削除しました。 ME FOR

AJAX doesntの仕事

  $.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: クロスオリジンリソース共有(CORS)フィルタ:サポートされていないHTTPメソッド:ブラウザが前にOPTIONSリクエストを打つん

+0

おそらくあなたのウェブサーバが適切なを追加する必要がありますCORSヘッダーはajax呼び出しに応答します。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS Ajaxリクエストは、通常セキュリティ上の理由から、通常のHTTPリクエストと同じことをすべて行うことはできません。解決策は、サーバー上で適切な応答ヘッダーを設定し、必要なHTTPメソッド(通常はOPTIONSを含む)を許可することです。 – ADyson

答えて

4

をDELETE実際のリクエストを送信します。この要求が受け入れられている方法

Access-Control-Allow-Methods: GET, OPTIONS 

を含んサーバーは、したがって、あなたの要求は、このエラーをスローし、オプション応答でDELETE認められた方法を送信しません。

この問題を解決するには、サーバーによって受け入れられた方法にDELETEを追加する必要があります。サーバーの設定で

Access-Control-Allow-Methods: POST, GET, DELETE, OPTIONS 

オプションのリクエストは、セキュリティ対策としてブラウザによってのみ実装されているため、ブラウザでのみ送信されます。 curl/node/SOAPUI5はこの制限を確認しないので、必要なものを得ることができます。 (サーバは、いくつかのヘッダを防止するためにそうでなければ、内部で設定されていない限り)

更新

が挙げ@jannisように、それは実際のものに先行OPTIONS要求がプリフライト要求と一般に機構と呼ばれていることは注目に値するですCORSと呼ばれています。

あなたはこれらのリンクをたどってプリフライトリクエスト(と一般的にはCORS)で詳細を読むことができます:

+1

実際のものに先行するOPTIONSリクエストはプリフライトリクエストと呼ばれ、一般的なメカニズムはCORSと呼ばれます。プリフライトリクエスト(および一般的なCORS)[here](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests)と[ここ](https:// developer.mozilla.org/en-US/docs/Web/HTTP/Server-Side_Access_Control#Preflighted_requests) – jannis

+0

素晴らしい、私は答えに追加します。 – Bamieh

+0

非常に有益な回答をいただき、ありがとうございます@AhmadBamieh – dtechlearn

関連する問題