如何为nodejs Express服务器启用CORS?

时间:2019-03-24 04:51:13

标签: node.js express

我正在尝试在前端使用Ajax请求:

$.ajax({
    type: "GET",
    url: "localhost:3000/send",
    beforeSend:function(){
             $(".loading_msg").hide();
        },
    complete:function(){
             $(".loading_msg").show();
        }
});

但是当我加载包含脚本的页面时,出现以下错误:

  

从源访问“ localhost:3000 / send”处的XMLHttpRequest   “ http://localhost:3000”已被CORS政策禁止:跨来源   仅协议方案支持请求:http,data,chrome,   chrome-extension,https。

  

unchecked runtime.lastError:消息端口在响应之前关闭   已收到。

我尝试了很多事情,例如添加中间件来表达:

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
     next();
   });

没有什么不同。

我还尝试安装cors npm软件包并做到了

const cors=require('cors')
app.use(cors())
app.options('*', cors());

这也没有区别。

我还尝试通过添加https://

来更改ajax URL。
 url: "https://localhost:3000/send",

虽然这确实消除了CORS错误,但它给了我另一个错误:

  

获取https://localhost:3000/send净:: ERR_SSL_PROTOCOL_ERROR

在使用本地主机时如何从Nodejs Express服务器发送Ajax请求?

2 个答案:

答案 0 :(得分:2)

您的cors错误消息明确指出,发出请求时您需要使用http

$.ajax({
    type: "GET",
    url: "http://localhost:3000/send",
    beforeSend:function(){
             $(".loading_msg").hide();
        },
    complete:function(){
             $(".loading_msg").show();
        }
});

答案 1 :(得分:0)

您将需要一个受欢迎的软件包CORS。 另一个解决方法是使用Express服务器将后端添加到您的Web应用程序,并使用axios / request npm软件包使用http向API服务器请求数据,这样您就不会遇到任何CORS问题。