web-dev-qa-db-ja.com

リクエストヘッダーフィールドは、$ httpのAccess-Control-Allow-Headersでは許可されていません

Postman Chromeを使用してサービスに[〜#〜] post [〜#〜]を実行していますExtension、そして私は期待される応答を得る。

しかし、$httpを使用して同じ[〜#〜] post [〜#〜]リクエストを実行すると、すべてが地獄に落ちます。

私は:を取得します

Request header field Engaged-Auth-Token is not allowed by Access-Control-Allow-Headers

Engaged-Auth-Tokenはヘッダーです。

Postmanで機能し、Chromeでは機能しない理由がわかりません...

何か案は?

6
Morty

この問題は、リクエストヘッダーからAccess-Control-Allow-Headersが欠落していることが原因です。これを修正するには、リクエストヘッダーにAccess-Control-Allow-Headers: *を追加する必要があります

Access-Control-Allow-Headershttp request headerに追加します。 $httpProviderを使用して、アプリレベルでこれを行うことができます。このヘッダーを追加するには、アプリ構成セクションに以下の行を追加します。

var app = angular.module("app", [
    "ngRoute",
    "app.controllers",
    "app.directives",
    "app.filters"
]);

app.config([
    "$routeProvider",
    "$httpProvider",
    function($routeProvider, $httpProvider){
        $httpProvider.defaults.headers.common['Access-Control-Allow-Headers'] = '*';
    }
]);
1
Aditya Singh

CLIENTの$ httpProviderでAccess-Control-Allow-Headersを構成しても機能しないと思います。ヘッダーはサーバー上で(応答ヘッダーとして)構成する必要があると思います。たとえば、node-expressアプリケーションでは、これはミドルウェア(たとえば)を使用して実行でき、次のようになります。

res.header('*')

または(より選択的に)必要なヘッダーのみ:

res.header('Engaged-Auth-Token, Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
7
raul

バックエンドでsailsapiを使用する場合は、cors.jsを変更し、ここにファイルされたトークンを追加します

module.exports.cors = {
  allRoutes: true,
  Origin: '*',
  credentials: true,
  methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD',
  headers: 'Origin, X-Requested-With, Content-Type, Accept, Engaged-Auth-Token'
};
0
Sedat Y