80

npm 'isomorphic-fetch' を使用してリクエストを送信しています。私が経験している問題は、リクエスト ヘッダーのコンテンツ タイプを設定できないことです。

application/json のコンテンツ タイプを設定しましたが、リクエスト ヘッダーは text/plain に設定されています。

import 'isomorphic-fetch';

  sendRequest(url, method, body) {
    const options = {
      method: method,
      headers:{'content-type': 'application/json'},
      mode: 'no-cors'
    };

    options.body = JSON.stringify(body);

    return fetch(url, options);
  }

ブラウザでリクエストを調べると、コンテンツ タイプは o です。

content-type:text/plain;charset=UTF-8

このプロパティを設定できない理由を誰か説明できますか?

4

2 に答える 2

61

フェッチ ヘッダー オブジェクトを作成する必要があります。

sendRequest(url, method, body) {
    const options = {
        method: method,
        headers: new Headers({'content-type': 'application/json'}),
        mode: 'no-cors'
    };

    options.body = JSON.stringify(body);

    return fetch(url, options);
}
于 2016-07-15T20:05:04.107 に答える
36

次の記事を読んだ後、答えを見つけました。

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#Headers

ガード

ヘッダーはリクエストで送信され、レスポンスで受信される可能性があり、どの情報を変更できるか、変更する必要があるかについてさまざまな制限があるため、ヘッダー オブジェクトにはガード プロパティがあります。これは Web には公開されませんが、headers オブジェクトで許可されるミューテーション操作に影響します。

可能なガード値は次のとおりです。

  • none: デフォルト。
  • request: リクエストから取得したヘッダー オブジェクトをガードします ( Request.headers)。
  • request-no-cors: で作成されたリクエストから取得されたヘッダー オブジェクトを保護しRequest.mode no-corsます。
  • response: 応答から取得したヘッダーを保護します ( Response.headers)。
  • immutable: 主に ServiceWorker に使用されます。headers オブジェクトを読み取り専用にします。

request:保護されたヘッダーのヘッダーを追加または設定することはできませんContent-Length。同様にSet-Cookie、応答ヘッダーへの挿入は許可されていません。ServiceWorker は、合成された応答を介して Cookie を設定することはできません。

オプション モード プロパティが no-cors に設定されている場合、要求ヘッダーの値は不変です。

代わりに、mode プロパティを cors に設定しました。

于 2016-07-02T18:48:22.160 に答える