HTTP-поток не работает на Safari iOS - PullRequest
0 голосов
/ 24 июня 2018

Я тестирую потоковую передачу http2 через браузер, но не могу заставить ее работать на iOS Safari.У вас нет яблочного рабочего стола атм.

сервер узла:

const http2 = require('http2')
const fs = require('fs')

const server = http2.createSecureServer({
  key: fs.readFileSync('../certs/localhost-privkey.pem'),
  cert: fs.readFileSync('../certs/localhost-cert.pem')
})

const page = fs.readFileSync('full.html.br')

let middle = 300

server.on('error', (err) => console.error(err))

server.on('stream', (stream, headers) => {
  stream.respond({
    'content-type': 'text/HTML',
    ':status': 200,
    'Content-Encoding': 'br'
  })
  stream.write(page.slice(0, middle))
  stream.end(page.slice(middle, page.length - 1))
})

server.listen(8443)

В iOS просто отображается пустая страница.В Linux и Windows это работает правильно.Он также работает с gzip, только brotli не работает.

1 Ответ

0 голосов
/ 24 июня 2018

Не уверен, что это была опечатка, но эта строка:

'Content-Encoding': 'brotli'

на самом деле должно быть:

'Content-Encoding': 'br'

Когда я это делаю, он отлично работает на iPhone (iOS 11.4)iPad (iOS 11.4) и Safari на Mac, в противном случае он отображает мусор.Но он делает то же самое в Chrome, когда используется неправильная кодировка содержимого.

Если вышеупомянутое является опечаткой, то я бы предположил, что ваш full.html.br может иметь проблему?

...