CORS错误-对预检请求的响应未通过访问控制检查

时间:2019-12-15 19:03:52

标签: ajax cors

我试图在不使用反向代理的情况下解决CORS错误(这是不可能的,而且架构上的变化很大)。

我有以下ajax(对于目的地,已设置了正确的Access-Control-x标头。

function showCORSContent(docUrl) {
    if (docUrl != undefined && docUrl !== '') {
        $.ajax({
            headers: {          
                "Accept": "text/plain",         
                "Content-Type": "text/plain"  
              },            
            cache: false,
            async: false,
            type: "GET",
            xhrFields: { withCredentials: true },
            crossOrigin: true,
            url: docUrl,
            success: function(data) {
                $('#dummyframe').html(data);              
            },
            complete: function() {
                console.log("done ajax");
                return;
            },
            error: function(error) {
                console.log("done ajax");
                return;
            }
          });
    }
    return;
}

据我所知,这是一个Simple请求,这意味着不应进行飞行前检查。当从父页面进行第一次调用时,ajax响应良好,并且可以看到内容已正确加载。但是当我尝试打第二个电话时-它会进行飞行前检查,并在此过程中进行重定向。从MDN,我了解的是在请求不简单时执行飞行前检查。我不确定问题出在哪里,因为在第二次通话中它总是会出错。当前工作流的设置方式如下:

1)页面加载,并向另一个子网站进行ajax CORS调用。 2)内容已加载。 3)现在,用户尝试单击父网站上的某些内容-这应该对子网站进行类似的ajax调用以加载其他内容-这是失败的地方。

更新

我看到的是连续请求失败,因为浏览器未发送SESSION cookie。即使会话cookie绑定到该特定实例(例如www.one.site.com,而不是*.site.com),我仍希望cookie是在该父页面的连续请求中发送的。我确实设置了所有凭证标头和AJAX字段,那么为什么这样做呢?我需要回调来保存Cookie吗?

0 个答案:

没有答案