質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

1回答

5500閲覧

node-fetchでmode: corsが機能しない

2_34_koki

総合スコア67

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/06/17 05:21

node-fetchを使い,postを行いたいのですが、どうしてもcorsでエラーが出てしまいます。mode: corsはちゃんと付けています。

import axios from "axios"; import fetch from "node-fetch"; import { User } from "types/types"; export const fetch1 = async (type = "", user: User) => { const params = new FormData(); params.append("username", user["username"]); params.append("password", user["password"]); const response = await fetch( "https://hoge.herokuapp.com/api/works", { method: "POST", headers: { 'Access-Control-Allow-Origin':'*' }, body: params, mode: "cors", //credentials: "include", // cookieを付けたい場合い } ); console.log(response) const json = await response.json(); console.log(json); }; // Access to fetch at 'https://hoge.herokuapp.com/api/works' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Postmanを使って叩けていることは確認しています。解決策がわかる方はどうかよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

node-fetchの説明には、以下のようにあります。

A light-weight module that brings window.fetch to Node.js

つまり、これはNode.js用です。ブラウザで使うものではありません。

投稿2020/06/17 05:24

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2022/02/18 14:17 編集

そして、Node.jsのようなサーバサイドからのアクセスには、もともと「クロスオリジン制約」は存在しませんので、Node.jsがクライアントとなる通信についてCORSを考える必要は皆無です。
2_34_koki

2020/06/17 05:25

と言うことはSSRする際にサーバーサイドで使えば、行けるという解釈ですか?
maisumakun

2020/06/17 05:26

ブラウザサイドで行う場合は、ブラウザにあるfetchをそのまま使ってください。
2_34_koki

2020/06/17 05:28

なるほど。ありがとうございます。
maisumakun

2020/06/17 05:29

そして、「Access-Control-Allow-Origin」はサーバ側から与えるものですので、クライアントサイドで追加しても効果はありません(送信するサーバの側でCORSに対応してくれていなければ、CORSとしての通信は行なえません)。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問