WebSocket-Safari 9-标头值中的UTF-8序列无效

WebSocket-Safari 9-标头值中的UTF-8序列无效,utf-8,safari,websocket,Utf 8,Safari,Websocket,我正在创建一个WebSocket,它在Chrome版本47.0.2526.106(64位)中工作,但在Safari版本9.0.2(11601.3.9)中失败。错误是头值中的UTF-8序列无效。Safari似乎要求包含某些标题,并采用某些格式,但我找不到 我使用了开源WebSocketHandshake行 if (valueStr.isNull()) { m_context->addMessage(JSMessageSource, LogMessageType, ErrorMessa

我正在创建一个WebSocket,它在Chrome版本47.0.2526.106(64位)中工作,但在Safari版本9.0.2(11601.3.9)中失败。错误是头值中的UTF-8序列无效。Safari似乎要求包含某些标题,并采用某些格式,但我找不到

我使用了开源
WebSocketHandshake

if (valueStr.isNull()) {
    m_context->addMessage(JSMessageSource, LogMessageType, ErrorMessageLevel, "invalid UTF-8 sequence in header value", 0, clientOrigin(), 0);
    return 0;
}
请求如下:

概述

Request URL:wss://example.server.io/query?string=test
Request Method:GET
Status Code:101 Switching Protocols
响应标题

Connection:Upgrade
Sec-WebSocket-Accept:R3JnbOI454z48aMONLd+8HP6Asg=
Set-Cookie:
Upgrade:websocket
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,fr;q=0.6,fr-CA;q=0.4
Cache-Control:no-cache
Connection:Upgrade
DNT:1
Host:example.server.io
Origin:http://localhost:3000
Pragma:no-cache
Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits
Sec-WebSocket-Key:QUuX6/L23NIezYa4aZJbFw==
Sec-WebSocket-Version:13
Upgrade:websocket
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
string:test
请求标题

Connection:Upgrade
Sec-WebSocket-Accept:R3JnbOI454z48aMONLd+8HP6Asg=
Set-Cookie:
Upgrade:websocket
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,fr;q=0.6,fr-CA;q=0.4
Cache-Control:no-cache
Connection:Upgrade
DNT:1
Host:example.server.io
Origin:http://localhost:3000
Pragma:no-cache
Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits
Sec-WebSocket-Key:QUuX6/L23NIezYa4aZJbFw==
Sec-WebSocket-Version:13
Upgrade:websocket
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
string:test
查询字符串参数

Connection:Upgrade
Sec-WebSocket-Accept:R3JnbOI454z48aMONLd+8HP6Asg=
Set-Cookie:
Upgrade:websocket
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,fr;q=0.6,fr-CA;q=0.4
Cache-Control:no-cache
Connection:Upgrade
DNT:1
Host:example.server.io
Origin:http://localhost:3000
Pragma:no-cache
Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits
Sec-WebSocket-Key:QUuX6/L23NIezYa4aZJbFw==
Sec-WebSocket-Version:13
Upgrade:websocket
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
string:test

Safari/WebKit不喜欢空标题。在这种特殊情况下,问题是空的
Set Cookie:
头。这是Webkit中的一个bug。 Chrome也有这个问题,但他们很快就解决了。
在服务器响应中删除该头,它应该可以工作