gpt4 book ai didi

cors - 从 Elm 中的 HTTP 响应读取自定义 header

转载 作者:行者123 更新时间:2023-12-04 10:55:28 26 4
gpt4 key购买 nike

我正在使用 Http.expectStringResponse 将 HTTP 响应元数据与正文(或错误)一起传递。我记录了 Dict.keys metadata.headers进入控制台。根据日志,Elm 没有传递所有的 header 。从附图中可以看出,dev-tools 网络选项卡中的标题集是日志中标题的超集。我在文档中找不到对此的解释。希望 Elm 社区可以有所启发。
enter image description here
更新
正如 glennsl 和 Gareth Latty 所指出的,这与 CORS 相关,与 Elm 无关。 XMLHttpRequest产生相同的结果。

最佳答案

I can't reproduce this.有一些标题不会被返回——特别是 Set-CookieSet-Cookie2 ,但您示例中的所有内容都应该是,至少就 Elm 而言。

你可以看到 Http 's header parsing 的实现:

_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;
}

您可以在 Elm 中看到,没有进行过滤。

getAllResponseHeaders() 确实过滤了前面提到的两个标题:

A ByteString representing all of the response's headers (except those whose field name is Set-Cookie or Set-Cookie2) separated by CRLF, or null if no response has been received. If a network error happened, an empty string is returned.



正如您所看到的,这可能是特定情况导致浏览器不返回所有 header 的原因。我们需要更多信息(最好是我们可以重现问题的示例)来说明更多。按照建议 in glennsl's comment ,这可能是 a CORS issue .我建议尝试使用 getAllResponsHeaders()直接在该环境中并从等式中删除 Elm。

关于cors - 从 Elm 中的 HTTP 响应读取自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59234034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com