Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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 2中设置beforesend标头_Angular_Xmlhttprequest - Fatal编程技术网

如何在angular 2中设置beforesend标头

如何在angular 2中设置beforesend标头,angular,xmlhttprequest,Angular,Xmlhttprequest,我是安格拉尔的新手。我想使用angular2制作一个http post。Ajax请求同样是- $.ajax({ url: apiUrl, type: 'Post', dataType: "json", data: request, beforeSend: function (xhr) { xhr.setRequestHeader("Authorization-ApiKey", 'Ak12mr27Xwg@d89ul'); },

我是安格拉尔的新手。我想使用angular2制作一个http post。Ajax请求同样是-

 $.ajax({
    url: apiUrl,
    type: 'Post',
    dataType: "json",
    data: request,   
    beforeSend: function (xhr) {
        xhr.setRequestHeader("Authorization-ApiKey", 'Ak12mr27Xwg@d89ul');
    },
    success: function (response) {
        if (response.ErrorCode != 0) {
           alert(response.ErrorMessage)
        }
        else {
        }
    },
    error: function (a) {
        alert('Invalid Action.');
       }
    });
实际上,我不知道如何在angular2中设置beforesend标头。我试过了,但没用。它的给予-

未能对“XMLHttpRequest”执行“open”:无效的URL“和
响应状态:500 URL的内部服务器错误: ****i/api/R****1/登录

我的PostAPI的angular2代码-

 import { Injectable } from '@angular/core';
    import { Http, Headers, Response, RequestOptions } from '@angular/http';
    import {Observable} from 'rxjs/Rx';
    import 'rxjs/add/operator/map'

    @Injectable()
    export class AuthenticationService {
        constructor(private http: Http) { }
        login(username: string, password: string) {
            var headers = new Headers();
            headers.append('Content-Type', 'application/x-www-form-urlencoded');
            headers.append('Authorization-ApiKey','Ak12mr27Xwg@d89ul');
            headers.append('Accept', 'application/json');            
            let options = new RequestOptions({ headers: headers });

            return this.http.post('http://111.118.241.110/B****i/api/R******1/Login', {
    UserName: username, Password: password } , options)
    .map((response: Response) => {

            let user = response;

         });

       }
    }
我非常确定,已经处理了所有CORS启用API的相关问题。解决方案是什么。
附言:这对GET请求很有效。

这对我来说很有效,我希望它能帮助我

import { Injectable } from '@angular/core';
import { Http, Response, Headers, HttpModule, RequestOptions } from '@angular/http';

@Injectable()
export class ClassName{
    public url:string="url";

    constructor(private _http:Http) { }

    authenticate(userName, password){
      console.log("user:" + userName);
      console.log("pass:" + password);
      var authdata = window.btoa(userName + ':' + password);
      var header = new Headers();
      header.append('Authorization', 'Basic ' + authdata);
      header.append('contentType','application/json; charset=utf-8');
      header.append('Accept','application/json');
      header.append('Access-Control-Allow-Origin', '*');
      var option = new RequestOptions();
      option.headers = header;

      console.log(header);
        return this._http.get(this.url + 'Method', option)
        .map((response:Response)=>response.json());
    }
}

最后一个答案对我有用!但我使用代币来改进它:

.....
authenticate(token){
  console.log("user:" + token);
  var authdata = window.btoa(token+ ':');
  console.log("authdata:" + authdata);
  var header = new Headers();
  header.append('Authorization', 'Basic ' + authdata);
  header.append('contentType','application/json; charset=utf-8');
  header.append('Accept','application/json');
  header.append('Access-Control-Allow-Origin', '*');
  var option = new RequestOptions();
  option.headers = header;

  console.log(header);
    return this.http.get(this.baseUrl, option)
    .map((response:Response)=>response.json());
}

....

头的使用在角度6中折旧。
使用HttpHeader:

import { HttpHeaders, HttpClient } from '@angular/common/http';

constructor(private http: HttpClient) {

      // Setting up the header
      this.header = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')
      this.header = this.header.append('Accept', 'application/json');
      this.header = this.header.append('Authorization', yourAuthVariable);

}