【问题标题】:CORS- Cross Domain Jquery Ajax call to Dell Boomi Rest ServiceCORS- 跨域 Jquery Ajax 调用 Dell Boomi Rest 服务
【发布时间】:2015-12-08 12:10:32
【问题描述】:

我在从我的 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>

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

以下是错误 XMLHttpRequest 无法加载......对预检请求的响应未通过访问控制检查:请求的资源上不存在“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 服务器:码头(6.1.26-boomi2) 设置 Cookie:BIGipServerP_BOOMI10-STAGE.SUCCESSFACTORS.COM-9090=1863780874.33315.0000;路径=/

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

请帮忙, 提前致谢

【问题讨论】:

  • 您找到解决方案了吗?

标签: jquery boomi


【解决方案1】:

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

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

示例网址:

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

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • @TobySpeight,请密切注意您在低质量队列中查看的内容 - 问题中有一个链接,但它是一个示例 URL,而不是指向外部资源的链接,它是连同相关上下文一起提供。您选择的评论模板完全不相关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 2012-04-13
  • 2012-11-29
  • 2018-12-25
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
相关资源
最近更新 更多