CORS-跨域Jquery Ajax呼叫戴尔Boomi休息服务

时间:2015-12-08 12:10:33

标签: jquery boomi

我在使用jquery代码连接到Boomi中的Restful Web服务时遇到了麻烦。它基本上是一个从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>
&#13;
&#13;
&#13;

我已经搜索并应用了javascript方面的所有内容。根据boomi文档,我们需要在我们已经设置的Boomi API中配置CORS头。但是当我检查响应头时,这些头文件没有返回。

以下是错误 XMLHttpRequest无法加载......对预检请求的响应未通过访问控制检查:否&#39; Access-Control-Allow-Origin&#39;标头出现在请求的资源上......因此不允许Origin访问。响应的HTTP状态代码为403。

基本上我们必须从服务器端设置Access-Control-Allow-Origin,它与.Net WEB API配合良好。但对于繁荣,它未能返回原始标题。 根据Boomi文档http://help.boomi.com/atomsphere/GUID-0E38FB83-331E-45B1-8E12-0014048D6663.html,需要返回以下标题以响应CORS请求的工作。

Access-Control-Allow-Origin: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) Set-Cookie:BIGipServerP_BOOMI10-STAGE.SUCCESSFACTORS.COM-9090 = 1863780874.33315.0000;路径= /

如果Jsonp是解决方案,请告诉我们如何在Boomi中编写回调函数。 我无法为此要求创建任何代理服务器。

请帮忙, 在此先感谢

1 个答案:

答案 0 :(得分:0)

我设法让CORS今天与戴尔Boomi合作。我们必须将boomi_auth =添加到url以使http预检消息正常工作。预检信息可以在Boomi共享服务器的日志文件中识别为OPTIONS。

一旦我完成所有工作,我将在我的网站上记录这些内容以及如何使用Boomi测试CORS。现在,它似乎只适用于Origin *。无法得出结论,很快就会有更多新闻。

示例网址:

https://example.com/ws/rest/api/v1/HelloWorld;boomi_auth=YW5hcGxhbkB1bml0NC1HVEZKU1ouNVNERTlSOmJiN2IxZGEzLWI4MTUtNDZjZS1hOWNlLTc1YjYzOWEwOGNhZg==