当我尝试使用React向后端发送数据时,我遇到了这个错误。根据我了解到的情况,我需要允许后端和.htaccess
文件中的通信。以下是我使用的一些链接:
No 'Access-Control-Allow-Origin' - Node / Apache Port Issue
How does Access-Control-Allow-Origin header work?
他们都有密码,但没用。
到目前为止,我的服务器端代码如下:
app.use(function (req, res, next) {
// Website you wish to allow to connect
// res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
res.setHeader('Access-Control-Allow-Origin', '*');
// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 'POST');
// Request headers you wish to allow
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
// Set to true if you need the website to include cookies in the requests sent
// to the API (e.g. in case you use sessions)
res.setHeader('Access-Control-Allow-Credentials', true);
// Pass to next layer of middleware
next();
});
这是我的客户端代码:
sendMail(e) {
e.preventDefault();
var name = document.getElementById('name').value;
var contactReason = document.getElementById('contactReason').value;
var email = document.getElementById('email').value;
var additionalInfo = document.getElementById('additionalInfo').value;
var body = {
name: name,
contactReason: contactReason,
email: email,
additionalInfo: additionalInfo,
};
console.log(JSON.stringify(body));
fetch('http://localhost:4000/', {
method: 'POST',
body: body,
}).then(r => console.log(r)).catch(e => console.log(e));
}
我没有.htaccess
文件,但是我在本地完成了所有的工作,所以我不确定我是否可以使用它。
在我看来,我允许所有我需要的,但我想这是不够的。
如果你要标记为重复,请至少确保我的问题是涵盖的答案。
6条答案
按热度按时间41ik7eoe1#
有一个节点包叫cors,这使得它非常容易。
1百万美元1倍
你不需要任何配置来允许所有。
查看Github存储库了解更多信息:https://github.com/expressjs/cors
mwg9r5ms2#
一个原因可能是您使用的路由是localhost:8000,而不是http://localhost:8000。
使用
请勿使用
vs91vp4v3#
如果添加此标题
您正在使用凭据模式(表示您正在从应用发送一些身份验证Cookie),并且根据CORS规范,您不能在此模式下使用通配符 *。
您应该更改
Access-Control-Allow-Origin
报头,以匹配生成请求的特定主机您可以更改此行:
到
但为了更通用,应该可以这样做:
此外,您甚至必须允许来自浏览器的OPTIONS请求,否则您将得到一个预检请求错误。
qcuzuvrc4#
对于其他任何人,这可能会有帮助,我是使用
axios
与withCredentials: true
。在我的Express后端,我只是在做,
解决这个问题的方法是从React前端删除
withCredentials: true
,或者将后端更改为,zzwlnbp85#
你必须允许
OPTIONS
方法浏览器将其与任何POST请求一起发送到其它域,以检查它将如何与该远程服务器通信。
bqf10yzr6#
我在包含授权令牌后也收到CORS错误。
这是我的快递js代码
下面是我的React代码
如果你们能帮我就太好了。