使用Angular& amp;的跨域请求NodeJs(CORS)

时间:2017-03-02 11:38:56

标签: javascript node.js angular cors cross-domain

我正在尝试通过CORS与Angular和NodeJs进行跨域请求(GET,POST,DELETE ...)。当我尝试使用Chrome浏览器时,我很成功,但在Win7上的IE11上,我得到以下错误。

SEC7118: XMLHttpRequest for http://master.domain:1300/login required Cross-Origin Resource Sharing (CORS).

SEC7119: XMLHttpRequest for http://master.domain:1300/login required CORS preflight.

SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied.

主域名我设置标题Access-Control-Allow-Origin,因此成功使用Chrome。

我已经尝试了xdomain库但是我无法成功使用Angular。我可能会错过一些东西,但我不知道是什么。互联网上没有例子。

在IE上我可以做些什么?我可以使用除CORS之外的任何其他方式。

有任何帮助吗?

由于

2 个答案:

答案 0 :(得分:1)

只需设置" Access-Control-Allow-Origin"标题可能不够,取决于您正在制作的请求类型。您还应该设置"访问控制 - 允许 - 方法"和"访问控制允许标题"

举个例子:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, PUT, OPTIONS
Access-Control-Allow-Headers: Content-Type

答案 1 :(得分:0)

只需在nodejs端尝试此代码即可

app.use(function (req, res, next) {
  res.setHeader('Access-Control-Allow-Origin', 'http://localhost:4200');
  res.setHeader('Access-Control-Allow-Methods', 'POST');
  res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
  res.setHeader('Access-Control-Allow-Credentials', true);
  next();
});