'http://localhost:3000' 已被 CORS 策略阻止:没有 'Access-Control-Allow-Origin'

时间:2021-02-19 09:15:15

标签: reactjs

你能帮我吗,我有一个功能有问题: http://localhost:3000 已被 CORS 策略阻止:请求的资源上存在 No Access-Control-Allow-Origin 标头。如果不透明响应满足您的需求,请将请求的模式设置为 no-cors 以获取资源:

  handleSubmit = e => {
         e.preventDefault();
         const data={
             'username' : this.username,
             'password' : this.password
         }
         fetch(process.env.REACT_APP_API_URL+'/api/login', data,{
             method:"POST",
             headers:{
                 'accept': 'application/json',
                 'Access-Control-Allow-Origin': "*",
                 'content-type': 'application/x-www-form-urlencoded',
                 'Access-Control-Allow-Credentials': 'true',
             }
         })
             .then(r => r.json());
         }

但是url有问题,怎么解决? enter image description here

2 个答案:

答案 0 :(得分:2)

当您访问的 port 与您使用的 port 不同时,您无法访问资源。

修复

正如@Freestyle09 所评论的,您需要在后端启用 CORS 策略:

在 PHP 中:

header('Access-Control-Allow-Origin: *');

在 node.js (Express) 中:

  • 从 npm 安装 cors 包。
var express = require('express');
var cors = require('cors');
var app = express();

app.use(cors());

如果要指定主机,这应该将标头设置为 Access-Control-Allow-Origin: *

app.use(cors({
  origin: 'http://yourapp.com'
}))

从这个答案中阅读更多内容:

答案 1 :(得分:0)

感谢大家的意见和解答,这个问题已经解决,正在运行中。

这个问题很简单,我只是在pckage.json中添加

  "proxy":"http://127.0.0.1:8000",

我在 axios fatch 中使用

axios({
        url:'/api/login',
        data:data,
        method:"POST",
        mode: 'no-cors',
        headers:{
            "Content-Type": "application/json",
            "Access-Control-Allow-Origin": process.env.REACT_APP_API_URL,
            "Access-Control-Request-Headers": 'Content-Type, Authorization'

        }
    })
    .then(res => {
        console.log(res);
    })
    .catch(err =>{
        console.log(err);
    })

这对我有用,谢谢大家 (n_n)