我已经阅读了很多关于CORS& amp; Javascript和关于更改帖子中的标题但我找不到正在寻找的正确示例。
所以我首先要开始解释这种情况:
我遇到的问题在以下帖子中描述: jQuery $.ajax(), $.post sending "OPTIONS" as REQUEST_METHOD in Firefox
- >我的FF& Chrome标头会发送METHOD OPTIONS而不是METHOD POST。
我编写的示例代码在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);
我找到了两种解决方法,但没有任何示例: - 用代理做一些事情? - 发送特定标题
有关我的问题的更多信息,请访问: - http://scn.sap.com/message/13697625#13697625
答案 0 :(得分:1)
如果您无法在服务器端设置正确的标头,并且无法修改jsonP的响应,那么您确实应该使用代理。
代理脚本是一种中间件。您向脚本请求脚本获取数据,并将其返回给您。例如php proxy。你可以在asp,jsp,flash甚至java applet中做同样的事情。
现在,您拥有自己的SAP服务,首选位置的代理(php)文件,以及与代理相同的域中的本地JavaScript。你甚至不需要CORS。
如果要将代理放在另一个域中,则必须确保php文件发送正确的标头。 (Access-Control-Allow-Origin yourdomain
或Access-Control-Allow-Origin * for allow all
)