我有一个SAP Gateway OData-Service和一个本地Tomcat Apache Server。我的SAPUI5客户机部署在Tomcat中,并从SAP Gateway远程服务器请求OData-Webservice。实际上存在跨域错误。所以我在我的OData-Webservice和我的SAPUI5客户端请求中使用JSONP设置了头"Access-Control-Allow-Origin“,但是我会得到一个错误,因为SAP Gateway不能处理JSONP响应。
我的代码:

错误:“未捕获SyntaxError:意外的令牌:”
该错误取决于SAP网关与JSONP的不兼容性。
如果我查看网络请求,我会找到这个:

它是来自not服务的JSON (而不是JSONP)响应。
所以我的问题是。是否有可能访问此响应?我尝试通过许多回调来访问,比如成功、错误、失败、完成、始终、完成等等。但是没有机会..。
感谢并致以最良好的问候
发布于 2016-01-22 19:32:21
$.ajax({
type: 'GET',
url: url,
async: false,
jsonpCallback: 'jsonCallback',
contentType: "application/json",
dataType: 'jsonp',
success: function(response) {
//this is where you'll get data/response
console.log(response) ;
},
error: function(e) {
console.log(e.message);
}
});更新:
问题出在您的上下文中..有一些像_1453458442107=:1这样的值

检查并对其执行encode。
发布于 2016-01-24 02:27:42
如果您在odata响应中设置了CORS头" access -Control-Allow-Origin“,您应该能够使用常规JSON (没有P)访问服务。
当CORS-Header不可用时,JSONP是一种绕过同源策略的解决方法。
如果您的odata服务使用身份验证,则可能需要设置更多的CORS头才能使其正常工作。
On MDN你可以阅读更多关于CORS和它的标题的内容。
On Wikipedia是关于CORS与JSONP的章节。
那么你有没有尝试过下面这样的方法呢?
$.get({
url:"https://.../sap/opu/odata/sap/ZMOBILAD_SRV/UsernameSet?$format=json",
context: document.body,
cache: false
}).done(function(){
console.log(this);
});https://stackoverflow.com/questions/34944762
复制相似问题