web-dev-qa-db-ja.com

方法POST formdataではなくペイロードのデータ

私は、作成したWebスクリプトからAlfrescoサービスにリクエストを送信しようとしており、ペイロードにjsonデータを渡しています。

これはAlfrescoサービスです。

http://localhost:8080/share/proxy/alfresco/api/internal/downloads

そして、次のようなスクリプトノードにjson配列を渡す必要があります。

var jsonData = "[{'nodeRef':'workspace://SpacesStore/920b43d4-e79c-40eb-96f3-1dff3a169929'},  {'nodeRef':'workspace://SpacesStore/f19fba4b-0cf6-4379-a858-70d0d7d9efb0'},{'nodeRef':'workspace://SpacesStore/6ea51288-9364-4070-a23b-499025a6c1f9'}]";

この方法で電話をかける

$.ajax({
    url: serviceUrl,
    type: "POST",
    dataType: "json",
    data: jsonData
}); 

残念ながら、開発者ツールからリクエストリストをチェックすると、jsonデータがリクエストのフォームデータとして渡され、内部サーバーエラー応答が返されます。

別のWebサイトで同じサービスが使用されているのを見て、データがペイロードとして渡されるので、データをペイロードで渡す必要があると思います。

誰もそれを強制する方法を知っていますか?

21
Enrico

リクエストのContent-Typeヘッダーに依存すると思います。コンテンツタイプが「application/x-www-form-urlencoded」の場合、フォームデータの下に表示されます。 -例えば-Content-Type:application/jsonを置くと、jsonはペイロードの一部になります。次を使用できます。

$.ajax({
    url: serviceUrl,
    type: "POST",
    dataType: "json",
    data: jsonData,
    contentType: "application/json"
});       
32
GarethL