Http.expectStringResponse
본문 (또는 오류)과 함께 HTTP 응답 메타 데이터를 전달하는 데 사용 하고 있습니다. 그리고 Dict.keys metadata.headers
콘솔에 로그인합니다 . 로그에 따르면 Elm은 모든 헤더를 전달하지 않습니다. 첨부 된 이미지에서 볼 수 있듯이 dev-tools 네트워크 탭의 헤더 세트는 로그에있는 헤더의 상위 세트입니다. 문서에서 이에 대한 설명을 찾을 수 없습니다. Elm 커뮤니티가 빛을 발할 수 있기를 바랍니다.
glennsl과 Gareth Latty가 지적했듯이 이것은 CORS와 관련이 있으며 Elm과 관련이 없습니다. XMLHttpRequest
동일한 결과를 생성합니다.
나는 이것을 재현 할 수 없습니다. 가 있습니다 반환-특히되지 않습니다 일부 헤더 Set-Cookie
와 Set-Cookie2
적어도 지금까지 느릅 나무에 관한 한,하지만 당신의 예제에있는 모든 사람이되어야한다.
Http
의 헤더 구문 분석에 대한 구현을 볼 수 있습니다 .
_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()
앞서 언급 한 두 개의 헤더를 필터링합니다.
ByteString
(그 필드 이름을 제외한 상기 응답의 헤더의 모든 표현Set-Cookie
또는Set-Cookie2
) CRLF로 구분하거나,null
응답이 수신되지 않은 경우. 네트워크 오류가 발생하면 빈 문자열이 반환됩니다.
보시다시피 상황에 따라 브라우저가 모든 헤더를 반환하지 않을 가능성이 있습니다. 더 많은 정보를 제공하려면 더 많은 정보 (이상적으로는 문제를 재현 할 수있는 예)가 필요합니다. glennsl의 의견에서 제안 했듯이 이것은 CORS 문제 일 가능성이 높습니다 . getAllResponsHeaders()
해당 환경에서 직접 사용 하고 방정식에서 Elm을 제거하는 것이 좋습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다