私のミドルウェアコード:
app.use(cors());
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE, OPTIONS");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
if (req.method === 'OPTIONS') {
res.send(200);
} else {
next();
}
});
同じエラー メッセージを持つ人を見つけるたびに、彼らの問題を修正する応答には、私が持っているのと同じように「Access-Control-Allow-Methods」を設定するように指示することが含まれます。
フロントエンドでの私の削除方法:
deleteSaved(url) {
// return axios.delete("https://api.mlab.com/api/1/databases/etc.", {
// params: {
// "url": url
// }
// })
// .then(function(results) {
// console.log("axios results", results);
// return results;
// });
return fetch("/saved", {
method: 'DELETE',
body: JSON.stringify({url: url}),
mode: 'cors',
cache: 'default'
}).then(function(response) {
return response;
}).then(function(data){
console.log(data);
return data;
});
}
axios delete メソッドに問題があると思ったので、そこに fetch と axios の両方があります。開発サーバーでは、両方の呼び出しが正常に機能します。
axios メソッドでは、簡単にするために (作業を簡単にするために) db API URL を用意しています。前回この質問をしたとき、誰かがコメントし、ブラウザを直接接続するのではなく、エクスプレスサーバーを介してすべてのDBリクエストをプロキシすることを提案したため、フェッチメソッドで「/保存」しました。私はいくつかのことを試しました (create-react-app フロントエンドに関連付けられた package.json の mlab API URL に「proxy」と「https_proxy」を設定しました)が、それが何を意味するのか本当に理解できていないと思います。プロキシは機能しませんでした (「/saved」は、mlab API の URL ではなく、アプリの URL + /saved での GET リクエストに対してエラーになります)。エクスプレスサーバー経由でDB。
私の応答ヘッダー:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Methods:POST,GET,OPTIONS,PUT
Access-Control-Allow-Origin:https://nyt-mern-app.herokuapp.com
Access-Control-Max-Age:1728000
Allow:POST,GET,OPTIONS,PUT
Cache-Control:no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0
Connection:Keep-Alive
Content-Length:0
Content-Type:text/html;charset=UTF-8
Date:Thu, 26 Oct 2017 19:34:08 GMT
Expires:Tue, 01 Feb 2000 08:00:00 GMT
Keep-Alive:timeout=5, max=99
Last-Modified:Thu, 26 Oct 2017 19:34:08 GMT
Pragma:no-cache
Server:Apache/2.4.7 (Ubuntu)
X-Frame-Options:DENY
私が言ったように、すべてがローカル開発環境で動作します。これを展開で機能させるにはどうすればよいですか?