我试图在我的Angular4应用程序(在localhost:4200上)与Electron和云服务器之间建立套接字连接来管理数据。
与云的任何连接都需要传递带有授权令牌的标头才能进行身份验证。
我使用socket.io-client 2.0.3与标头建立套接字连接。 所以我使用了类似这样的解决方案:Use extraHeaders option - using socket.io-client >= 1.4.
在mySocketService.ts中:
openSocketConnection(): void {
...
const ioc = require('socket.io-client');
socket = ioc.connect(webSocketBackendURL, opts);
...
}
webSocketBackendURL
是套接字连接的URL,opts
(见下文)标题。
问题是我获得了 403状态代码:
"对预检请求的响应未通过访问控制检查:否'访问控制 - 允许 - 来源'标头出现在请求的资源上。"
要获得通过,我试图调整opts
参数:
使用Access-Control-Allow - *:
opts = {
extraHeaders: {
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
'Access-Control-Allow-Origin': 'http://localhost:4200',
'Access-Control-Allow-Methods': 'GET, POST, PATCH, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Credentials': true,
'Authorization': `Bearer ${accessToken}`,
'content-type': 'application/json'
}
};
没有,只需' 授权'和' 内容类型'。
我也尝试按照此回答How to avoid the CORS preflight的说明进行操作,但没有成功。
但错误仍然相同......
有没有人知道如何解决这个问题?
谢谢,