0

我在从我的 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 中编写回调函数。我无法为此要求创建任何代理服务器。

请帮助,在此先感谢

4

1 回答 1

0

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

完成所有内容后,我将在我的网站上记录这些内容以及如何使用 Boomi 测试 CORS。现在,它似乎只适用于 Origin *. 还不能下结论,很快就会有更多消息。

示例网址:

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

于 2016-02-16T13:44:43.850 回答