簡體   English   中英

CORS:不存在“ Access-Control-Allow-Origin”標頭Angular 2

[英]CORS : No 'Access-Control-Allow-Origin' header is present Angular 2

我正在嘗試實現進行PATCH Http調用的服務,這是出現此錯誤的唯一方法“沒有'Access-Control-Allow-Origin'標頭存在”,當我在chrome上檢查開發工具時,我看到了一個OPTION而不是PATCH,這是我的方法:

pauseTasksJobs(id, task){

//this.headers.append('Access-Control-Allow-Origin', 'application/json');
//this.headers.append('Accept', 'application/json');

  var url = this.home+ "tasks/" +task+ "/jobs/" + id ;
  var body = "{  \" status \"  : \"Pause\" }";
  //var body = "{ status : Pause }";
   console.log("this is my body: "+body) 

   var result;

    this._http.patch(url,body,this.requestOption).
    map(res => res.json())
    .subscribe(res => {
               result = res;
              console.log("this is my result: "+result);
    },  error=> console.error('Error: ' + error),()=>console.log("tasks mis en pause"));
}

在我的構造函數中,我像這樣設置標題內容:

headers = new Headers();
 requestOption = new RequestOptions({ headers: this.headers });

  private actionV: string;

  constructor(private _http: Http) {
    this.headers.append('Content-Type', 'application/json');
    this.headers.append('Accept', 'application/json');
    this.headers.append('Authorization', 'Basic ' + cookieValue);
  }

首先,將您的標頭添加到您的補丁請求中。

像這樣:

headers.append('Content-Type', 'application/json');
headers.append('Content-Type', 'Access-Control-Allow-Headers');

並且不要忘記將標頭添加到您的http請求中,如下所示:

this.http
    .patch(url, JSON.stringify(payload), { headers: headers })
    ...

其次,在您的tomcat配置中,您需要配置:

 <param-name>cors.allowOrigin</param-name>
    <param-value>*</param-value>
</init-param>
<init-param>
 <param-name>cors.supportedMethods</param-name>
    <param-value>GET, POST, OPTIONS, PATCH</param-value>
</init-param>
<init-param>
    <param-name>cors.supportedHeaders</param-name>
    <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
</init-param>
<init-param>
    <param-name>cors.supportsCredentials</param-name>
    <param-value>true</param-value>
</init-param>

在PATCH上,Angular首先發送OPTIONS,然后為什么我們需要在CORS中允許OPTIONS。

希望能幫助到你 ?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM