2017-01-27 7 views
3

fetchを使用して、自分自身のWordPress REST APIエンドポイントに問い合わせています。しかし、フェッチで行うすべてのリクエストは、TOO_MANY_REDIRECTSで最後にエラーを取得するまで、302個のステータスコードの無限ループで終わります。フェッチは302のステータスコードを返しますが、XHRは返されません。

illustration of problem

これはネイティブフェッチ使用して、クロム56です。しかし、私がブラウザを使ってエンドポイントにアクセスしたとき、XHRまたはPostmanを使用すると、私は常にステータスとして200を取得します。

一方、XHR ...

XHR doesn't suffer from this problem

この問題に関連するコード:

static checkStatus(email = null) { 
    const cookie = Cookies.get('cookiename'); 
    const data = email || cookie; 

    if (!cookie && !email) { 
     return Promise.reject(new Error('No data given.')); 
    } 

    // This works. 
    return new Promise((resolve, reject) => { 
     request({ 
     url: `/wp-json/woo/donate/status/?email=${data}`, 
     method: 'GET', 
     success: (response) => { 
      resolve(response); 
     }, 
     error: (error) => { 
      reject(error); 
     } 
     }) 
    }); 

    // This doesn't. 
    return fetch(`/wp-json/woo/donate/status/?email=${data}`, { 
     method: 'GET', 
    }); 
    } 

、私は実際に私のコードでは二つの連続return文を持っていないことに注意してくださいそれはデモ用です。私はXHRへのラッパーとしてrequest()を使用しています、あなたはsource for that hereを見つけることができます。

どうすればこの問題を回避できますか?フェッチはまだ「実験的」であることはわかっていますが、まだサポートしていないブラウザにpolyfillをバンドルすることで、すでに出荷されたいくつかのプロジェクトで使用しています。これは新しいものです。

+0

誰かが尋ねる前に、私が '/ wp-json'の代わりに'/wp-json/'を使うと同じ結果になります。 – Christian

答えて

1

この問題は、ローカルVagrantマシンを破棄してWordPressを再構築し、再度起動することで解決されました。

一度電源を入れ直して問題を解決しました。

関連する問題