API(レール)リクエストを作成するために角度2を使用しています。 HTTPリクエストを角度を使って作成すると、次のエラーが発生します。 XMLHttpRequestはhttps://api-urlをロードできません。プリフライト要求への応答がアクセス制御チェックを通過しない:要求されたリソースに「アクセス制御許可」がない。 Origin 'http://localhost:4200'はアクセスできません。応答にHTTPステータスコード404がありました。 しかし、私がPostmanまたはブラウザ自体からリクエストを作成しようとすると、エラーは発生しません。私は宝石「jsonapi-resources'toオープンAPを使用して、私のレールのサーバーでAccess-Control-Allow-Originの角度要求時のエラー
makeRequest() {
let user = {"user": "user", "password": "password"};
let headers: Headers = new Headers();
headers.append('Authorization', 'Basic ' + btoa(user.user + ':'+user.password));
headers.append('Content-Type', 'application/vn.api+json')
let this.http.get(api-url, {headers: headers}).map(res => res.json()).subscribe(data => {
this.data = data;
})
}
:データが正常に 角度コードを表示されます。私のAPIコントローラでは、私が要求にヘッダを認証し、設定するには、このコードを持っている:
module Api
class ApiController < JSONAPI::ResourceController
prepend_before_action :set_headers, :authenticate
def context
{ current_station: @user }
end
private
def authenticate
authenticate_or_request_with_http_basic do |token, _|
@user = User.where(api_key: token).first
end
end
def set_headers
response.headers["Access-Control-Allow-Origin"] = "*"
end
end
end
私はブラウザやpostamanを使用して要求を行うと、ヘッダが正常に表示されますが、角度で、私はエラーを持っています。