急にaxiosでURLリクエストできなくなった!?


何が起きたのか

今まで普通に運用できていたシステムでaxiosを利用してURLリクエストを行なっている箇所から上記のようなエラーが。。


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


あ〜CORSのエラーね、
ん〜
CORS周辺なんか最近いじったかなぁ?
まぁ調べてみるか

const functions = require('firebase-functions');
const corsLib = require('cors');
const cors = corsLib();

exports.say = functions.https.onRequest((request, response) => {
    return cors(request, response, () => {
        response.send("Hello from Firebase!");
    })
});

もともとこんな感じで書かれていました。
これの関数の中身がしっかり書かれている感じ

ちゃんとCORS許可してるぞ〜??

気がつけば3時間ハマってた。

CORSの問題ではなかった

corsのバージョンを変えてみたり、
firebaseのcloud functionsが悪いのかとデプロイし直したり、
しかし原因がわからない。
簡単なログを吐くfunctionを作成して呼んでみると、
動いた…

ますますわからん、cors全然問題ないじゃん…

色々調べてやっとわかった。
今回のバグ、もともとはメールを送るcloud functionだったのだが、
メールの本文をaxiosのgetでクエリパラメータとして渡していた。
今回ユーザーが長文を送ったことでバグが発生。
どうやらaxiosのget関数は渡せるクエリパラメータの長さに限界があるみたいだ。

axiosの関数をgetからpostに変更すると解決!

ちゃんとデータを来るときはpost使おうねというお話。