Angular PUT发送选项,这就是别的

时间:2018-02-13 15:51:51

标签: angular http cors put

所以我有一个Angular应用程序,不同的调用REST API到GET,POST工作按预期他们不发送任何选项预检,但是当它说它只是地狱,我在谷歌上找不到答案我尝试过每一个标题。在这一点上,我只是认为PUT不是一个真正的要求......我真的很绝望。

这就是我在我的角度应用程序中拨打电话的方式:

    Connect = function(){
    console.log("dbConnect");
    let options = new RequestOptions({ withCredentials: true });
    this._http.get('http://localhost:443/some/Connect', options)
        .subscribe();
}

Read = function(){
    console.log("Read");
    let options = new RequestOptions({ withCredentials: true });
    this._http.post('http://localhost:443/some/Read','', options)
        .subscribe(); 
}

Create = function(){
    console.log("Create");
    let data = '{...}';
    this._http.put('http://localhost:443/some/Create',data) 
        .subscribe(); <- only sends option
}

我已经在我的服务器上设置了每个标题。

Access-Control-Allow-Origin: *
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Headers: X-Requested-With
    Access-Control-Allow-Headers: Content-Type
    Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT 
    Access-Control-Max-Age: 86400

我在实际请求中尝试过不同的标题,例如:

let headers = new Headers();
headers.append("Content-Type", "application/json");
headers.append("Authorization",btoa("user:pass"));

我尝试过什么只是发送OPTION而这就是全部。为什么它不能用于POST和GET呢?我真的不知道我花了太多时间在这上面,我在谷歌上发现了如何使这项工作没有明确的解释。我知道必须有一个预检,但即使我回答你想要的任何标题,它也没有做更多的事情......我可以看到当我按F12我回答的标题是在响应中但有角度只是根本不关心。

任何想法如何让我的PUT工作?

这是我将localhost传递给localhost(不同端口)的角色。我尝试在firefox上使用插件“cors everywhere”,但禁用该插件仍然有效,因为我允许我的服务器端的客户端端口。只有PUT方法不起作用,所有工作都可以使用和不使用corse ..请帮助

编辑答案

如果你有同样的问题:对我来说解决它的是如果请求是OPTION则不在服务器端设置域。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。就我而言,我使用的是节点服务器。添加插件也会有所帮助,但这不是真正的方式,我想

我在服务器代码中添加了以下行。

  • res.header(“Access-Control-Allow-Origin”,“*”);
  • res.header(“Access-Control-Allow-Headers”,“X-Requested-With”);