你能帮我吗,我有一个功能有问题:
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
答案 0 :(得分:2)
当您访问的 port
与您使用的 port
不同时,您无法访问资源。
正如@Freestyle09 所评论的,您需要在后端启用 CORS 策略:
在 PHP 中:
header('Access-Control-Allow-Origin: *');
在 node.js (Express) 中:
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)