我在从我的 jquery 代码连接到 Boomi 中的 Restful Webservice 时遇到问题。它基本上是从 javascript 到 webservice 的跨域请求。下面是我的jQuery代码。
<script type="text/javascript">
function LoadSurvey() {
makeCorsRequest();
}
function makeCorsRequest() {
jQuery.support.cors = true;
var URL = 'https://boomi-example.com/ws/rest/Candidate/1';
$.ajax({
//beforeSend: function (xhr) {
// xhr.setRequestHeader("Authorization", "Basic ZXJuc3R5b3VuZy1NRE5IWEouR1QwS1IwOjAyZGQ1NmNmLTQ0ZDEtNDBlNC05YmNjLTg2M2ViNGUyMzA4NA==");
//},
type: "GET",
//jsonpCallback: 'JSON_CALLBACK',
//jsonp: false,
url: URL,
//dataType: 'jsonp',
username: '****,
password: '****',
//crossDomain: true,
//xhrFields: {
// withCredentials: true
//},
headers: {
'Authorization': 'Basic ZXJuc3R5b3VuZy1NRE5IWEouR1QwS1IwOjAyZGQ1NmNmLTQ0ZDEtNDBlNC05YmNjLTg2M2ViNGUyMzA4NA=='
},
contentType: 'application/json; charset=utf-8',
success: function (data, textStatus, jqXHR) {
alert(JSON.stringify(data));
},
error: function (jqXHR, textStatus, errorThrown) {
alert(JSON.stringify(jqXHR));
alert(textStatus);
alert(errorThrown);
},
complete: function (jqXHR, textStatus) {
alert(JSON.stringify(jqXHR));
}
});
}
</script>
我已经从 javascript 方面搜索并应用了所有内容。根据 boomi 文档,我们需要在我们已经设置的 Boomi API 中配置 CORS 标头。但是当我检查响应标头时,这些标头不会返回。
以下是错误 XMLHttpRequest cannot load ...... 对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头......因此来源是不允许访问。响应具有 HTTP 状态代码 403。
基本上,我们必须从服务器端设置 Access-Control-Allow-Origin,这与 .Net WEB API 配合得很好。但是对于boomi,它无法返回原始标头。根据 Boomi 文档http://help.boomi.com/atomsphere/GUID-0E38FB83-331E-45B1-8E12-0014048D6663.html,需要返回以下标头以响应 CORS 请求才能工作。
访问控制允许来源:https ://example.com
访问控制允许方法:GET、POST、PUT、DELETE
Access-Control-Allow-Headers:X-Custom-Header、Some-Other-Header
只有返回的响应标头低于
HTTP/1.1 403 禁止内容长度:0 服务器:Jetty(6.1.26-boomi2) 设置 Cookie:BIGipServerP_BOOMI10-STAGE.SUCCESSFACTORS.COM-9090=1863780874.33315.0000;路径=/
如果 Jsonp 是解决方案,请告诉如何在 Boomi 中编写回调函数。我无法为此要求创建任何代理服务器。
请帮助,在此先感谢