因此,当我试图使用React将数据发送到后端时,我遇到了这个错误。据我所知,我需要允许在后端和.htaccess
文件中进行通信。以下是我使用的一些链接:
无“访问控制允许源”-节点/Apache端口问题
访问控制允许起源头是如何工作的?
他们两个都有代码,但都没用。
到目前为止,我的服务器端代码如下:
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
文件,但我都是在本地完成的,所以我不确定是否可以使用它。
在我看来,我允许我需要的一切,但我想这还不够。
如果你要标记为重复,请至少确保我的问题被答案涵盖。
如果你加上这个标题
res.setHeader('Access-Control-Allow-Origin', '*');
您正在使用凭据模式(意味着您正在从应用程序发送一些身份验证cookie),对于CORS规范,您不能在此模式下使用通配符*。
您应该更改您的Access-Control-允许-起源
标头以匹配生成请求的特定主机
您可以更改此行:
res.header('Access-Control-Allow-Origin', '*');
到
res.header('Access-Control-Allow-Origin', 'the ip address');
但更一般地说,类似这样的方法应该有效:
res.setHeader('Access-Control-Allow-Origin', req.header('origin')
|| req.header('x-forwarded-host') || req.header('referer') || req.header('host'));
此外,您甚至必须允许来自浏览器的选项请求,否则您将获得飞行前请求错误。
res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS');
有一个名为cors的节点包,这使它非常简单。
$npm安装cors
const cors = require('cors')
app.use(cors())
您不需要任何配置来允许所有。
有关更多信息,请参阅Github回购协议:https://github.com/expressjs/cors
问题内容: 所以当我尝试使用React将数据发送到后端时,我遇到了这个错误。据我了解,我需要允许后端和文件中的通信。这是我使用的一些链接: 没有“访问控制允许来源”-节点/ Apache端口问题 [Access-Control-Allow- Origin标头如何工作?]http://codingdict.com/questions/8006) 他们两个都有代码,但是没有帮助。 到目前为止,我的服务
我也在应用程序根目录中使用。htaccess文件。(waleedahmad.kd.io/node)。
如何通过 ajax 从远程 url 获取内容? jQuery ajax请求被阻止,因为跨源 控制台日志 跨来源请求被阻止:同一来源策略不允许读取http://www.dailymotion.com/embed/video/x28j5hv.的远程资源(原因:CORS标头“Access-Control-Allow-Origin”缺失)。 已阻止跨源请求:同源策略不允许读取位于的远程资源http://w
问题内容: 因此,我有了这个Go http处理程序,该处理程序将一些POST内容存储到数据存储中,并检索其他一些信息作为响应。在后端,我使用: 在我的firefox OS应用程序中,我使用: 传入的部分都一直如此。但是,我的回复被阻止了。给我以下信息: 我尝试了许多其他操作,但是无法从服务器获得响应。但是,当我将Go POST方法更改为GET并通过浏览器访问该页面时,我得到的数据太糟糕了。我无法真
我完全被难住了。我对AngularJS非常陌生,我正试图对我的泽西服务器api进行rest调用,但我运气不好。它使用curl或高级Rest客户端(Chrome浏览器加载项)工作。然而,当我试图使用我的angularjs应用程序打我的Rest时,我重复了以下内容… 这是我的CORS过滤器... } 注册我的CORS筛选器的应用程序类
问题内容: 这是我的代码: 这适用于GET请求而不是POST! 我将Apache用作服务器,并使用以下命令对其进行了配置: 在我的angularjs中,我包含在模块应用程序的配置中: 但是请求POST仍然无法正常工作! 我希望有人能提出任何想法。 问题答案: 在服务器端添加这些标头: 如果仍然无法正常工作,请发布浏览器正在发送的预检请求的详细信息。 为什么要这样做? 如果不是简单的请求(例如,表单