当我试图在前端使用socketio客户端连接到后台时,它显示出错误,从起源'http://localhost:8080/socket.io/?eio=4&transport=polling&t=nok7aq9'访问XMLHttpRequest已被CORS策略阻止:对飞行前请求的响应没有通过访问控制检查:请求的资源上没有'access-control-allog-origin'标头。
import React, { Component, Fragment } from "react";
import openSocket from "socket.io-client";
import Post from "../../components/Feed/Post/Post";
import Button from "../../components/Button/Button";
import FeedEdit from "../../components/Feed/FeedEdit/FeedEdit";
import Input from "../../components/Form/Input/Input";
import Paginator from "../../components/Paginator/Paginator";
import Loader from "../../components/Loader/Loader";
import ErrorHandler from "../../components/ErrorHandler/ErrorHandler";
import "./Feed.css";
class Feed extends Component {
state = {
isEditing: false,
posts: [],
totalPosts: 0,
editPost: null,
status: "",
postPage: 1,
postsLoading: true,
editLoading: false,
};
componentDidMount() {
fetch("http://localhost:8080/feed/status", {
headers: {
Authorization: "Bearer " + this.props.token,
},
})
.then((res) => {
if (res.status !== 200) {
throw new Error("Failed to fetch user status.");
}
return res.json();
})
.then((resData) => {
console.log("status fetched ", resData.status);
this.setState({ status: resData.status });
})
.catch(this.catchError);
this.loadPosts();
console.log("openSocket", openSocket);
const socket = openSocket("http://localhost:8080/", {
transports: ["polling", "websocket"],
transportOptions: {
polling: {
extraHeaders: { "Access-Control-Allow-Origin": "*" },
},
},
});
socket.emit("connection", { data: "data" });
socket.on("posts", (data) => {
if (data.action === "create") {
this.addPost(data.post);
}
});
}
backend code
mongoose
.connect(
"mongodb://chitesh:pass123@cluster0-shard-00-00.ulx1q.mongodb.net:27017,cluster0-shard-00-01.ulx1q.mongodb.net:27017,cluster0-shard-00-02.ulx1q.mongodb.net:27017/feed?ssl=true&replicaSet=atlas-demxn2-shard-0&authSource=admin&retryWrites=true&w=majority",
{ useNewUrlParser: true, useUnifiedTopology: true }
)
.then((result) => {
const server = app.listen(8080); // this basically return us the server
const io = require("./socket.js").init(server);
// websockets uses http protocols the basis
//so we are passing our http based server to the function
// to create a websocket connection
// we are setting up a function
// to be executed whener a new connection is made
io.on("connection", (socket) => {
console.log("Client connected");
});
})
.catch((error) => {
console.log(error);
});
socket.js
const { listenerCount } = require("./models/post");
let io;
module.exports = {
init: (httpServer) => {
io = require("socket.io")(httpServer);
return io;
},
getIO: () => {
if (!io) {
let error = new Error("Socket.io is not initialized");
throw error;
}`enter code here`
return io;
},
};
看一下express CORS中间件。您需要允许将LocalHost:3000用作Origin。
您可以使用类似
var express = require('express')
var cors = require('cors')
var app = express()
var corsOptions = {
origin: 'http://localhost:3000',
}
app.use(cors(corsOptions))
我已经成功地将我的nodejs后端和PostgreSQL数据库连接到我的ubuntu服务器。我还安装了nginx作为反向代理,当我访问浏览器上的公共ip地址时,它正在工作。 我的问题是,当我关闭Node.js服务器,安装pm2并正确配置pm2时,当我试图加载我的IOS模拟器时,会出现应用程序内的错误,但没有加载任何东西。(我将本地数据库中的所有内容复制到ubuntu数据库中,因此必须显示相同的帖子
问题内容: 我有两个单独的节点应用程序。我希望其中一个能够在代码中的某个时刻启动另一个。我将如何去做? 问题答案: 使用。它与相似,但是用于创建V8的全新实例。因此,它专门用于运行Node的新实例。如果您只是执行命令,请使用或。 请注意,默认情况下使用时,流与父级关联。这意味着所有输出和错误都将在父进程中显示。如果您不希望与父级共享流,则可以在选项中定义属性: 然后,您可以将流程与主流程的流分开处
我的CQ5中的一些页面。5.申请没有“jcr:content”节点。由于节点不存在,这些特定页面的属性不存在,用户无法修复。我想添加一个按钮,允许用户在缺少节点时添加节点。我已经能够添加一个按钮“Fix Properties”,它附带了一个自定义函数来检索现有节点,并且我能够检查jcr:content节点是否存在。我在任何地方都找不到关于如何从头创建节点的文档。我想这是一件很平常的事,但几乎找不到
本文向大家介绍详解使用React制作一个模态框,包括了详解使用React制作一个模态框的使用技巧和注意事项,需要的朋友参考一下 模态框是一个常见的组件,下面让我们使用 React 实现一个现代化的模态框吧。 组件设计 模态框想必大家都很熟悉,是工作中常用的组件,可以让我们填写或展示一些信息而不必打开一个新页面。在开始编码之前,我们先来了解一个 React 模态框组件应该如何设计。 React 是一
创建一个简单的火炬应用程序,它可以放在相机闪光灯上并将其关闭。这个应用程序应该有一个简单的用户界面,可以打开闪光灯,也可以关闭它。连续使用1分钟后,用户界面应该提示用户他想继续使用火炬。如果用户说是,火炬将继续亮一分钟,这个循环将重复。如果用户说不,火炬将被推迟。 创建一个简单的火炬应用程序很容易,我已经制作了火炬应用程序,但问题中提到的第二件事是在1分钟后做出提示,我不明白有人能帮忙吗? 这是我
一般来说,我可以做到这一点,一切看起来都一样, 但也许以后我不能把我的应用程序上传到谷歌开发者控制台? 或者我会在实现谷歌libs方面遇到问题?