クロームで動作してるfetch がedgeで動作しない


vue.js が非常に使いやすいので、積極的に使っている今日この頃、
Jqueryを使っている既存の開発分も、改修のタイミング等で少しずつ適用したりしてます。

そんな作業のいっかんで、データ取得のための

$.ajax(

$.getJSON(  

の表記をやめるべく

fetch(

のような簡易な表記で記述できる
html5から採用された「Fetch API」を利用してみたのですが・・・

ブラウザの対応状況みてもまあ大丈夫なようなので
ちょこちょこ置き換えていってると
クロームでは問題なかったのが、Android端末で動作しない!
あれっと、「edge」でみてみるとこれも動作しないし、どうもセッションが切れるようなエラーが・・

えいっとググるとわかりました。
credentials: request に使用したい秘密情報: omit、same-origin、include が使用可能です。現在のドメインの Cookie を自動で送るためにはこのオプションを指定する必要があります。Chrome 50 から、このプロパティはFederatedCredential インスタンスや PasswordCredential インスタンスを受け付けるようになりました。
(出典:Mozilla)
なるほど、クロームだけOkなのはそういうことなんですね。
どいうことで、

fetch( 'ポストするurl' ,
{
      mode: 'same-origin',
      credentials: 'include'
 }
).then(response => response.json()).then( jsonData => {

  //jsonDataを使って処理        

}).catch(err => console.error(err));



こんな感じでオプションに
{
            mode: 'same-origin',
            credentials: 'include'
        }

を追加することで事なきをえました。

0 件のコメント :

コメントを投稿