簡體   English   中英

fetch: o 'Access-Control-Allow-Origin' header 出現在請求的資源上:react 和 node

[英]fetch : o 'Access-Control-Allow-Origin' header is present on the requested resource : react and node

我有這個錯誤我不知道為什么在我的后端節點js中我使用的是 cors

const express = require('express');
const bodyParser = require('body-parser');
const port = 8080;
const  cors = require('cors');

require('./database/index')

const usersRouter = require('./routes/userRoutes');
const postRouter = require('./routes/post');

const app = express();
const router = express.Router();

usersRouter.configuration(router);
postRouter.configuration(router);

app.use(express.json());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.set('port',port);
app.use('/', router);
app.use(cors());
app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
  });

我的方法前端:

signIn = () => {
    const data = {login:this.login,password:this.password};
    const requestInfo = {
        method:'POST',
        body: JSON.stringify({data}),
        headers: new Headers({
            'Content-Type': 'application/json'
        }),
    };
    fetch('http://localhost:8080/login', requestInfo)
    .then(response => {
        if(response.ok){
            return response.json();
        }
        throw new Error("Login Invalido..")
    })
    .then(token => {
        sessionStorage.setItem('token', JSON.stringify(token.token));
        this.props.history.push("/users");
        return;
    })
    .catch(e => {
        this.setState({message: e.message})
    });
}

錯誤:

Access to fetch at ' http://localhost:8080/login ' from origin ' http://localhost:3000 ' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control -Allow-Origin' header 出現在請求的資源上。 如果不透明的響應滿足您的需求,請將請求的模式設置為“no-cors”以獲取禁用 CORS 的資源。

嘗試在路由器配置之前將 CORS 放入。

const express = require('express');
const bodyParser = require('body-parser');
const port = 8080;
const  cors = require('cors');

require('./database/index')

const usersRouter = require('./routes/userRoutes');
const postRouter = require('./routes/post');

const app = express();
const router = express.Router();

app.use(cors());
app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
  });

app.use(express.json());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.set('port',port);

usersRouter.configuration(router);
postRouter.configuration(router);

app.use('/', router);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM