我有一个简单的http nodejs服务器:
String [] NUMBERS= {"3 ","6 ","13 "};
Spinner s_spinner = (Spinner) findViewById(R.id.Spinner);
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<>(this,
android.R.layout.simple_dropdown_item_1line, NUMBERS);
// Specify the layout to use when the list of choices appears
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
s_spinner.setAdapter(spinnerAdapter );
在访问最新版Chrome浏览器中的页面时,这些是从服务器发送的响应标头:
因此,服务器发送正确的cookie。但是,浏览器似乎只存储第一个(require('http').createServer(function(req, res) {
res.statusCode = 200;
res.setHeader('Set-Cookie', 'age=44; name=ok; something=else; path=/');
res.end('ok ok ok', 'utf8');
}).listen(9999);
)。如果我再次刷新页面,则这些是发送到服务器的请求标头:
仅发送第一个Cookie(age=44
)。在控制台中记录age=44
也只返回document.cookie
。
从Chrome的用户界面检查Cookie时,我还可以看到只保存了第一个:
这里有什么问题?
答案 0 :(得分:1)
如果您只是使用vanilla Node,那么您只需将数组作为第二个参数传递给res.setHeader(field, value)
:
res.setHeader('Set-Cookie', [
'age=44; path=/',
'name=ok; path=/',
'something=else; path=/'
])
如果使用Express 4.11.0+,您可以使用res.append(field [, value])
:
res.append('Set-Cookie', 'age=44; path=/');
res.append('Set-Cookie', 'name=ok; path=/');
res.append('Set-Cookie', 'something=else; path=/');