Back to tech

webpack で cros を回避するメモ

2 min read
Table of Contents

スマートプラグをWebアプリから操作できるようにしてみた にて ifttt に post するときに CROS の問題に直面しました。

そのときに回避した方法をメモがてら記載しておきます。

問題エラー

フロントエンドから ifttt へ post したときに以下のエラーが発生し、post ができない状況になりました。

Access to XMLHttpRequest at 'https://*****' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

CROS(Cross Origin Resourse Sharing) です。

オリジン間リソース共有 (CORS) - HTTP | MDN
developer.mozilla.org
image

回避策

セオリー通りであれば IFTTT を叩くために バックエンドを建てるらしいですが、ちょっとめんどくさいです。

webpack の dev サーバーで回避できないかなぁと思い色々探すと proxy という機能を使うことで回避できるとのこと。

DevServer | webpack
webpack.js.org
image

最終的には以下のような形になりました。

const path = require('path');

module.exports = {
  devServer: {
    proxy: {
      "/api": {
        target: 'https://maker.ifttt.com/trigger/***',
        pathRewrite: { '^/api': '' },
        secure: false,
        changeOrigin: true
      }
    }
  }
}

参考