如何使用带有Angular4 /电子应用程序中的标头的socket.io在客户端修复CORS 403状态代码?

时间:2017-11-09 21:30:01

标签: angular socket.io cors

初始情况:

我试图在我的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的说明进行操作,但没有成功。

但错误仍然相同......

有没有人知道如何解决这个问题?

谢谢,

0 个答案:

没有答案