2016-04-25 9 views
1

Macのクロムの最終更新に問題があります。クロムの以前のバージョンでは、それが正常に動作し、実際にサファリとし、Firefoxはあまりにも正常に動作します...CORS with chrome 50.0.2661.86 in node

私はCORSでのNode.jsアプリを開発してM、私はこの方法を実装している:

app.use(function (req, res, next) { 

    res.setHeader('Access-Control-Allow-Origin', '*'); 

    res.setHeader('Access-Control-Allow-Methods', 'GET,POST,HEAD,OPTIONS,PUT,PATCH,DELETE'); 

    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Accept, Content-Type, Authorization'); 

    res.setHeader('Access-Control-Allow-Credentials', true); 

    next(); 
}); 

I私がやりたいとき、私はクロームの最後の更新(50.0.2661.86)以来と思い、mはエンバーと協力し、要求は「通常の」PATCH要求:)

PATCH http://localhost:3000/challenges/id 

を生成したオブジェクトを保存している。しかしパッチを当てるとエラーが返されます:

Method PATCH is not allowed by Access-Control-Allow-Methods in preflight response

あなたは何が間違っていると思いますか?

ありがとうございます。

答えて

0

まあ、Chromeは新しいバージョンに自動的に更新されますが、それは再び起こりません。非常に奇妙な問題、私はすべてのレスポンスに...ここに起こっ本当に何

感謝を知らない:)

0

どのようにリクエストしていますか? PATCHはすべて大文字ですか?それはFirefoxで動作しますか? (あなたのヘッダーの設定が細かいように見えるので、あなたは確かにあまりにもことを検査するかもしれませんが、質問。)

+0

こんにちはアン、あなたの答えに感謝。質問が更新されました。 – jos

+0

以前のコメントを編集することはできませんが、SafariとFirefoxでは正しく機能します。 – jos

+0

'ACA-Origin:*'と 'ACA-Credentials:true'は一緒に動作しませんが、FirefoxとSafariで動作すると思うと本当に問題にはなりません。 Chromeのバグだけかもしれません。 – Anne

0

わからない、それは問題を解決するが、これでnext()を交換しようとすることができた場合:

if (req.method === 'OPTIONS') { 
    res.status(200); 
    res.end(); 
} 
else { 
    next(); 
} 

新しいバージョンのChromeでは、サーバがプリフライトの応答を手動で処理したいことがあります。それが何を返すのか教えてください。

+0

あなたの答えマッテオありがとう、しかし、同じ結果を持っている、働いていない.. – jos

+0

非常に奇妙な問題..私も解決策に興味があるので、質問に+1。 –

+0

ダム質問:PUTとDELETE要求はうまく動作しますか? –