从基本域中运行的门户向子域中运行的服务进行Ajax调用时发生CORS异常

时间:2019-05-11 16:16:19

标签: javascript ajax cors xmlhttprequest cross-domain

我有一个设置,其中有一个基本域和多个子域。

例如,

  • 我的基本域名是jing.xxxxx.com
  • 我的子域是 rei.la.ca.jing.xxxxx.com。

根据我的一个用例,我需要从在基础域中运行的门户访问在子域中运行的服务。

也就是说,

  • 我的门户网站正在jing.xxxxx.com上运行
  • 名为MiDAS的服务正在rei.la.ca.jing.xxxxx.com中运行

在尝试触发Jquery ajax时,我收到如下所示的CORS异常。

从源“ https://rei.la.ca.jing.xxxxx.com/MiDAS/UPDATE”到“ https://jing.xxxxx.com”的XMLHttpRequest的访问已被CORS策略阻止:Access-Control不允许请求头字段access-control-allow-origin -允许标头在飞行前响应

enter image description here

下面是我尝试过的代码。

enter image description here

return new Promise((resolve, reject) => {
    let url = url_midasService + "UPDATE";
    let finalSettings = {};
    finalSettings.url = url;

    finalSettings.success = function (msg) {
        console.log("SUCCESS::" + url);
        resolve(msg);
    };

    finalSettings.error = function (jqXHR) {
        console.log("FAILURE::" + url);
        reject(jqXHR.status);
    };
    finalSettings.type = "PUT";
    finalSettings.data = JSON.stringify(payload);
    finalSettings.contentType = "application/json";
    finalSettings.crossDomain = true;
    finalSettings.headers = {
        'Access-Control-Allow-Origin': '*'
    };
    finalSettings.xhrFields = {
        withCredentials: true
    };

    $.ajax(finalSettings);
});

以下是一些额外的信息:

  • 如果我通过禁用安全性启动chrome浏览器,则不会发生异常。
  • 但是正如您所知,禁用客户端计算机中的chrome安全性根本不是一种选择。
  • 呼叫被浏览器本身阻止,并且根本无法到达我的服务

预先感谢:-)

0 个答案:

没有答案