首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Fastify-sse发送服务器发送事件的CORS问题

使用Fastify-sse发送服务器发送事件的CORS问题
EN

Stack Overflow用户
提问于 2022-07-25 16:13:03
回答 1查看 242关注 0票数 -1

我正在使用Fastify服务器将SSE事件发送到一个反应性前端。虽然在本地一切都很好,但我曾经在Nginx后面部署过一些问题。前端和服务器不在同一域中,虽然我将cors原点设置为服务器上的"*“,而另一个调用解决了没有问题,但对于服务器发送事件端点,只有我得到。

跨源请求被阻止:相同的原产地策略不允许在https://example.com/events上读取远程资源。(原因: CORS请求没有成功)。状态代码:(null)。

以下是使用@fastify/corsfastify-sse-v2配置Fastify的方式

代码语言:javascript
运行
复制
import fastifyCors from "@fastify/cors";
import FastifySSEPlugin from "fastify-sse-v2";

// ...
    await this.instance.register(FastifySSEPlugin, { logLevel: "debug" });
    await this.instance.after();
    await this.instance.register(fastifyCors, { origin: "*" });

然后发送基于postgres pubsub的事件,包括:

代码语言:javascript
运行
复制
    await pubsub.addChannel(TxUpdateChannel);

    reply.sse(
      (async function* () {
        for await (const [event] of on(pubsub, TxUpdateChannel)) {
          yield {
            event: event.name,
            data: JSON.stringify(event.data),
          };
        }
      })()
    );

在前端,我使用事件源以便添加授权头:

代码语言:javascript
运行
复制
import EventSource from "eventsource";

// ...
    
    const source = new EventSource(`${SERVER_URL}/transaction/events`, {
        headers: {
            'Authorization': `Bearer ${jwt}`,
        },
    });

    source.onmessage = (event) => {
        console.log('got message', event)
        getUserData()
    }

    source.onopen = (event) => {
        console.log('---> open', event)
    }

    source.onerror = (event) => {
        console.error('Event error', event)
    }
EN

回答 1

Stack Overflow用户

发布于 2022-07-27 13:48:33

问题在于nginx的配置。多亏了EventSource /Server-通过Nginx发送事件,我使用nginx的location中的以下内容解决了这个问题:

代码语言:javascript
运行
复制
proxy_set_header Connection '';
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73112330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档