CORS と Javascript について、および投稿のヘッダーの変更について多くのトピックを読みましたが、探している適切な例が見つかりません。
そこで、まず状況を説明することから始めます。
- これは私の手の届かないところにあるため、Web サーバーに何も変更できません (これは SAP クラウド ポータルです)。
- 変更できるのは POST コードだけなので、送信する内容を制御することしかできません。
私が抱えている問題は、次の投稿で説明されています: jQuery $.ajax(), $.post send "OPTIONS" as REQUEST_METHOD in Firefox
--> 私の FF & Chrome ヘッダーは、METHOD POST の代わりに METHOD OPTIONS を送信します。
IE では動作するが FF および Chrome では動作しないサンプル コードを作成しました。
var dataString = "<result><firstname>example</firstname><lastname>ThisIsSparta</lastname></result>";
var urlString = "http://delyo001.you.local:8000/sap/bc/youconsulting/ws/rest/anonymous/z_names_post";
//Add TO SAP.
var aData =
jQuery.ajax({
type: "POST",
contentType: "application/xml",
url: urlString, // for different servers cross-domain restrictions need to be handled
data: dataString,
dataType: "text",
success: function(xml) { // callback called when data is received
//oModel.setData(data); // fill the received data into the JSONModel
alert("success to post");
},
error: function(xml) { // callback called when data is received
//oModel.setData(data); // fill the received data into the JSONModel
alert("fail to post");
}
});
});
または
var invocation = new XMLHttpRequest();
var url = 'http://delyo001.you.local:8000/sap/bc/youconsulting/ws/rest/anonymous/z_names_post';
var body = '<result><firstname>perthyrtyrtygop</firstname><lastname>sparta</lastname></result>';
invocation.open('POST', url, true);
invocation.setRequestHeader('X-PINGOTHER', 'pingpong');
invocation.setRequestHeader('Content-Type', 'application/xml');
invocation.send(body);
これを修正する2つの方法を見つけましたが、例はありません: - プロキシで何かをしますか? - 特定のヘッダーを送信する
問題の詳細については、次の URL を参照してください。 - http://scn.sap.com/message/13697625#13697625