当前位置: 首页 > 面试题库 >

使用React和Express阻止跨域请求

周洋
2023-03-14
问题内容

所以当我尝试使用React将数据发送到后端时,我遇到了这个错误。据我了解,我需要允许后端和.htaccess文件中的通信。这是我使用的一些链接:

没有“访问控制允许来源”-节点/ Apache端口问题

[Access-Control-Allow-
Origin标头如何工作?]http://codingdict.com/questions/8006)

他们两个都有代码,但是没有帮助。

到目前为止,我的服务器端代码是这样的:

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文件,但是我在本地完成所有操作,因此不确定是否可以使用它。

在我看来,我满足了我的所有需求,但我想这还不够。

如果您要标记为重复,请至少确保答案涵盖了我的问题。


问题答案:

有一个名为cors的节点包,使它非常容易。

$npm install cors

const cors = require('cors')

app.use(cors())

您不需要任何配置即可全部允许。

有关更多信息,请参见Github仓库:https :
//github.com/expressjs/cors



 类似资料:
  • 因此,当我试图使用React将数据发送到后端时,我遇到了这个错误。据我所知,我需要允许在后端和文件中进行通信。以下是我使用的一些链接: 无“访问控制允许源”-节点/Apache端口问题 访问控制允许起源头是如何工作的? 他们两个都有代码,但都没用。 到目前为止,我的服务器端代码如下: 这是我的客户端代码: 那么我错过了什么?我没有文件,但我都是在本地完成的,所以我不确定是否可以使用它。 在我看来,

  • 问题内容: 因此,我有了这个Go http处理程序,该处理程序将一些POST内容存储到数据存储中,并检索其他一些信息作为响应。在后端,我使用: 在我的firefox OS应用程序中,我使用: 传入的部分都一直如此。但是,我的回复被阻止了。给我以下信息: 我尝试了许多其他操作,但是无法从服务器获得响应。但是,当我将Go POST方法更改为GET并通过浏览器访问该页面时,我得到的数据太糟糕了。我无法真

  • 问题内容: 如何通过Ajax从远程URL获取内容? jQuery ajax请求被阻止,因为跨域 控制台日志 跨域请求被阻止:“相同源策略”不允许读取http://www.dailymotion.com/embed/video/x28j5hv上的远程资源。(原因:CORS标头“ Access-Control-Allow-Origin”缺失)。 跨域请求被阻止:“相同源策略”不允许读取http://w

  • 我有一个运行API的restify服务器,我将cors中间件定义如下: 但我总是收到这样的错误信息: 跨源请求被阻止:同源策略不允许在https://myRoute...读取远程资源(原因:CORS预飞行通道未成功)。 我做错了什么?

  • 问题内容: 无法致电Spring REST服务 我的春季服务 我的AJAX代码 我收到以下错误:( 跨域请求被阻止:同源策略禁止读取位于http:// localhost:8080 / SpringMVC / rest / MAS / authenticate 的远程资源。可以通过将资源移到同一域或启用CORS来解决此问题。 我也尝试过。它将我的body对象附加到URL中,URL变为不同的URL,

  • 问题内容: 我正在尝试提出一个简单的跨域请求,而Firefox始终通过此错误阻止它: 跨域请求被阻止:同源策略禁止读取[url]处的远程资源。可以通过将资源移到同一域或启用CORS来解决此问题。[网址] 它可以在Chrome和Safari中正常运行。 据我所知,我已经在PHP上设置了所有正确的标头,以使其能够正常工作。这是我的服务器响应的内容 我尝试使用Angular,jQuery和基本的XMLH