Cors 从Elm中的HTTP响应读取自定义头

Cors 从Elm中的HTTP响应读取自定义头,cors,elm,Cors,Elm,我使用传递HTTP响应元数据和正文(或错误)。我将Dict.keys metadata.headers记录到控制台中。根据日志,Elm不会传递所有的头。从附加的图像中可以看出,dev tools network选项卡中的标题集是日志中标题的超集。我在文件中找不到对此的解释。希望榆树社区能提供一些信息 更新 正如glennsl和Gareth Latty所指出的,这与CORS有关,与Elm无关XMLHttpRequest产生相同的结果。有些头不会专门返回Set-Cookie和Set-Cookie2

我使用传递HTTP响应元数据和正文(或错误)。我将
Dict.keys metadata.headers
记录到控制台中。根据日志,Elm不会传递所有的头。从附加的图像中可以看出,dev tools network选项卡中的标题集是日志中标题的超集。我在文件中找不到对此的解释。希望榆树社区能提供一些信息

更新 正如glennsl和Gareth Latty所指出的,这与CORS有关,与Elm无关
XMLHttpRequest
产生相同的结果。

有些头不会专门返回
Set-Cookie
Set-Cookie2
,但至少就Elm而言,示例中的所有头都应该返回

您可以看到以下各项的实现:

您可以在Elm中看到,没有发生过滤

是否过滤前面提到的两个标题:

一个
ByteString
,表示所有响应的头(字段名为
Set-Cookie
Set-Cookie2
的头除外),由CRLF分隔,如果未收到响应,则表示
null
。如果发生网络错误,则返回空字符串


正如您所看到的,这可能是特定情况导致浏览器无法返回所有标题的原因。我们需要更多的信息(最好是一个可以重现问题的例子)来说明更多。正如建议的那样,这似乎是可能的。我建议您尝试在该环境中直接使用
getAllResponseHeaders()
,并从等式中删除Elm。

而不是编辑,如果这解决了您的问题,请随意接受我的答案,或者更好的是,发布您自己的答案,详细说明CORS问题以及您如何修复它并接受它!加雷斯,我投了赞成票,但不知道该如何接受这个答案。@yagger,你应该看看。
_Http_parseHeaders(xhr.getAllResponseHeaders())

...

function _Http_parseHeaders(rawHeaders)
{
    if (!rawHeaders)
    {
        return __Dict_empty;
    }

    var headers = __Dict_empty;
    var headerPairs = rawHeaders.split('\r\n');
    for (var i = headerPairs.length; i--; )
    {
        var headerPair = headerPairs[i];
        var index = headerPair.indexOf(': ');
        if (index > 0)
        {
            var key = headerPair.substring(0, index);
            var value = headerPair.substring(index + 2);

            headers = A3(__Dict_update, key, function(oldValue) {
                return __Maybe_Just(__Maybe_isJust(oldValue)
                    ? value + ', ' + oldValue.a
                    : value
                );
            }, headers);
        }
    }
    return headers;
}