문제

Multipart/Mixed를 사용하여 HTTP 응답을 만들고 싶지만 어떤 브라우저가 지원하는지 잘 모르겠습니다. 그리고 그것이 들리는 것처럼 편리하다면, 클라이언트의 관점에서. 솔직히 말해서, 나는 그 컨텐츠 유형을 구체적으로 필요로하지 않습니다. 동일한 응답으로 둘 이상의 파일을 전송하고 싶습니다. 다른 콘텐츠 유형이 더 많이 사용될 수 있습니다.

도움이 되었습니까?

해결책

집에서 만든 서버와 간단한 응답으로 테스트했습니다. 브라우저가 100% OK를 이해하지 않기 때문에 응답이 잘 구성되어 있는지 확실하지 않습니다. 그러나 결과는 다음과 같습니다.

  • Firefox 67.0.1 (64 비트): 마지막 부분 만 렌더링하고 다른 부분은 무시됩니다.
  • IE 11.503: 모든 내용을 단일 파일 (경계 포함)으로 저장하면 아무것도 렌더링되지 않습니다.
  • 크롬 2019 년 5 월: 모든 컨텐츠를 단일 파일로 저장하면 아무것도 렌더링되지 않습니다.
  • 사파리 4: 모든 컨텐츠를 단일 파일로 저장하면 아무것도 렌더링되지 않습니다.
  • 오페라 10.10: 이상한 것. 첫 번째 부분을 평범한/텍스트로 렌더링 한 다음 모든 것을 지 웁니다. 로딩 진행률 막대는 31%에 매달려 있습니다.

완전한 응답은 다음과 같습니다. 누군가가 오류를 발견하면 알려 주시면 다시 시도하겠습니다.

HTTP/1.1 200 OK
Date: Tue, 01 Dec 2009 23:27:30 GMT
Vary: Accept-Encoding,User-Agent
Content-Length: 681
Content-Type: Multipart/mixed; boundary="sample_boundary";

Multipart not supported :(
--sample_boundary
Content-Type: text/css; charset=utf-8
Content-Location: http://localhost:2080/file.css

body
{
 background-color: yellow;
}
--sample_boundary
Content-Type: application/x-javascript; charset=utf-8
Content-Location: http://localhost:2080/file.js

alert("Hello from a javascript!!!");

--sample_boundary
Content-Type: text/html; charset=utf-8
Content-Base: http://localhost:2080/

<html>
<head>
    <link rel="stylesheet" href="http://localhost:2080/file.css">
</head>
<body>
 Hello from a html
    <script type="text/javascript" src="http://localhost:2080/file.js"></script>
</body>
</html>
--sample_boundary--

다른 팁

내 경험상, 멀티 파트 응답은 Firefox에서 작동하지만 인터넷 익스플로러에서는 작동하지 않습니다. 2 년 전, 당시 브라우저를 사용했습니다.

JPEG 이미지 스트림에서 작동하는 HTTP 멀티 파트 응답이있었습니다. 예를 들어, Axis IP 카메라는 Firefox의 Motion JPEG 스트림에 사용됩니다. Internet Explorer의 경우 Axis는 플러그인을 사용해야합니다.

Firefox 전용 지원이 귀하의 요구 사항을 충족하는 경우, 다중 부분 응답의 각 부분에서 컨텐츠 길이 헤더를 설정하는 것이 좋습니다. 원래 HTTP 헤더에서 경계 문자열을 동일하게 만드는 데 도움이 될 수 있습니다.

두 가지 아이디어 :

  1. 형식 : "Multipart"가 소문자가되어야한다고 생각하며, 컨텐츠 유형 헤더의 끝에 세미콜론이 예상되지 않는다고 생각합니다 (차이가 될 것이라는 것은 의심 스럽지만 가능합니다).
  2. 교체 모드를 시도해 보셨습니까? 그냥 사용 : Content-type: multipart/x-mixed-replace - 다른 모든 것은 동일하게 유지되어야합니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top