Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.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 角度4:请求的资源上不存在“访问控制允许源”标头_Angular - Fatal编程技术网

Angular 角度4:请求的资源上不存在“访问控制允许源”标头

Angular 角度4:请求的资源上不存在“访问控制允许源”标头,angular,Angular,错误:CORS策略已阻止从源站访问“myserviceURL”处的XMLHttpRequest:请求的资源上不存在“Access Control Allow origin”标头 示例代码: let myHeaders = new HttpHeaders(); let username: string = 'admin'; let password: string = 'admin'; myHeaders.append("Authorization", "Basic " + bto

错误:CORS策略已阻止从源站访问“myserviceURL”处的XMLHttpRequest:请求的资源上不存在“Access Control Allow origin”标头

示例代码:

  let myHeaders = new HttpHeaders();
  let username: string = 'admin';
  let password: string = 'admin';
  myHeaders.append("Authorization", "Basic " + btoa(username + ":" + password));
  myHeaders.append('Content-Type', 'application/x-www-form-urlencoded');

  var data={
        "username":userName,
        "password":Password,
  }

  return this.http.post(url, data, { headers: myHeaders })
  .subscribe(
  res =>{
    console.log(res);
  },
  err => {
    console.log("Error occured "+err.status);
  }
  );

由于这是一个服务器端问题, 您可以做的是:如果您使用的是chrome,您可以为CORS添加chrome扩展,这将允许访问“访问控制允许来源”

它会起作用的


为我工作

如果后端在不同的端口上运行,默认情况下,Chrome将阻止跨源资源共享。当您开发应用程序时,您必须创建代理,该代理将在ng serve或npm start中运行,他将重新创建/转发所有api调用到指定地址。下面是一个例子:

//proxy.json

   {
  "/api": {
    "target": "http://localhost:8080",
    "secure": false
  }
}
这是什么意思? 指向/api的任何http请求都将被重写为http://localhost:8080.

此外,您必须在package.json内部更改npm start属性,或者在angular.json内部更改ng serve,以便在默认情况下使用命令ng serve/npm start运行代理

//angular.json

"serve": {
      "builder": "@angular-devkit/build-angular:dev-server",
      "options": {
        "browserTarget": "yourapp:build",
        "proxyConfig": "proxy.json"
      },
      "configurations": {
        "production": {
          "browserTarget": "yourapp:build:production"
        }
      }
    }

当您使用“application/x-www-form-urlencoded”时,请以这种格式发送编码的数据对象

    const data =
      'username=' +
      encodeURIComponent(userName) +
      '&password=' +
      Password +
      '&grant_type=password';

后端代码如何?当您执行请求时,是否在开始时添加了http://以使您能够访问服务器?CORS是一种服务器端设置,因此不会成为客户端问题。