2017-09-02 52 views
0

Angular 2 http post沒有設置內容類型

我試圖在http.post上設置標題,但沒有運氣。Apache CORS OPTIONS請求狀態501錯誤

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

import { User } from '../_models/index'; 

@Injectable() 
export class UserService { 
constructor(private http: Http) { } 

create(username: string, firstname: string, lastname: string, email: string, password: string) { 
    let headers = new Headers({ 
     'Accept' : 'application/json', 
     'Content-Type': 'application/json' 
    }); 
    let options = new RequestOptions({ headers: headers, method: 'post' }); 

    return this.http.post(
     'http://127.0.0.1:8080/api/users/register', 
     JSON.stringify({username, firstname, lastname, email, password}), 
     options 
     // this.jwt() 
    ).map(
     (response: Response) => response.json() 
    ); 
} 

我已經在我的Apache配置

<Directory /var/www/stockwatch_api> 
      Header set Access-Control-Allow-Origin "*" 
      Header set Access-Control-Allow-Headers "Content-Type" 
      Header set Access-Control-Allow-Methods "POST, PUT, DELETE, GET, HEAD" 

設置頭,我也在我的CakePHP API的應用程序設置相同的標題。

我得到這樣的響應:

狀態代碼:501未執行

enter image description here

+1

的問題是與後端。它拒絕[CORS飛行前OPTIONS請求](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests)。嘗試將OPTIONS添加到允許的方法列表中。 – georgeawg

+0

謝謝,我試過了,沒有工作。 – user5569354

+0

[在.htaccess中啓用cors的可能的重複](https://stackoverflow.com/questions/14467673/enable-cors-in-htaccess) – georgeawg

回答

0

嘗試使用headers.append()

let headers = new Headers(); 
headers.append('Accept', 'application/json'); 
headers.append('Content-Type', 'application/json'); 
+0

感謝@aravind,但沒有奏效 – user5569354

+0

你是否得到任何錯誤?你在teamviewer中可用嗎? – Aravind

1

如上所述,你的服務器拒絕OPTIONS請求,所以你需要讓它不這樣做。

開始通過增加你的Apache配置如下:

RewriteEngine On 
RewriteCond %{REQUEST_METHOD} OPTIONS 
RewriteRule ^(.*)$ $1 [R=200,L] 
+0

感謝仍然得到HTTP 501錯誤,雖然 – user5569354

+0

如果你仍然得到一個501,那麼我想這是從別的地方除了Apache。你提到cakephp。我想你想先看看那裏。無論您是否希望查看服務器日誌中的「http://127.0.0.1:8080」服務器,該服務器都會發送該請求,以便查看在服務器端發送的內容信息501迴應。 – sideshowbarker