Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular Put方法返回未经授权_Angular_Jwt - Fatal编程技术网

Angular Put方法返回未经授权

Angular Put方法返回未经授权,angular,jwt,Angular,Jwt,我是Angular的新手,我有这样的服务: readonly rootUrl = "http://myapi.net/"; private serviceUrl = "http://myapi.net/api/usuarios/listar"; headers = new Headers({ Authorization: "Bearer " + JSON.parse(localStorage.getItem("currentUser")).token, "C

我是Angular的新手,我有这样的服务:

readonly rootUrl = "http://myapi.net/";

  private serviceUrl = "http://myapi.net/api/usuarios/listar";
  headers = new Headers({
    Authorization:
      "Bearer " + JSON.parse(localStorage.getItem("currentUser")).token,
    "Content-Type": "application/json"
  });
  options = new RequestOptions({ headers: this.headers });
因此,我得到了用户通知,然后我创建了如下方法:

constructor(private http: Http) {}
postSwitch() {
    var cambioEstatus = this.http
      .put(this.rootUrl + "api/usuarios/activar", this.options)
      .map((data: any) => data.json());
    return cambioEstatus;
  }
最后在组件中使用,如:

onFlagChange(event) {
    this.UsuariosService.postSwitch().subscribe(
      () => {
        //React to your HTTP request success
        this.toastr.success("Success");
      },
      err => {
        this.toastr.error("Fail");
        //React to your HTTP request error
      }
    );
  }
但它总是返回错误401,额外的事情是,如果我和邮递员一起执行它,它不会返回那个错误。还有另一种方法(get),如:

不要抛出此错误,对于
put
操作,我还需要做另一件事?问候


看起来像是CORS问题,您需要在服务器上启用CORS或重试 将以下内容添加到标题中

Access-Control-Allow-Origin: * 
另外,试着把你的请求传递给body

postSwitch() {
var cambioEstatus = this.http
  .put(this.rootUrl + "api/usuarios/activar", body, this.options)
  .map((data: any) => data.json());
return cambioEstatus;
}

要启用CORS进行测试,请使用下面的chrome标志

chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security

我遇到了同样的问题。。。我认为问题在于put需要一个请求主体,而get不需要,因此在url和选项之间,您需要一个主体,比如
.get(this.rootUrl+“api/empresas/listar”,{},this.options)

chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security