CORS(クロスオリジン リソース シェアリング)エラーって何?
1. CORSってなに?
CORS(コース)は、異なるウェブサイト同士でデータのやり取りをするためのルールのことです。例えば、あなたがhttp://mywebsite.com
というサイトにアクセスしているとき、そのサイトがhttp://otherwebsite.com
からデータをもらってきたい場合にCORSが関係してきます。
ブラウザはセキュリティのために、勝手に他のサイトからデータを取ってくるのを防いでいます。このときに出てくるのがCORSのルールです。
2. CORSエラーって?
もしCORSのルールに違反していると、ブラウザが「このデータは取っちゃダメ!」とストップをかけてエラーが出ます。これがCORSエラーです。
例えば、こんなエラーメッセージを見たことがあるかもしれません:
Access to XMLHttpRequest at 'http://api.example.com/data' from origin 'http://mywebsite.com' has been blocked by CORS policy.
このエラーは、「このサイト(mywebsite.com
)は、他のサイト(api.example.com
)からデータを取ってこようとしたけど、許可されていないからブロックしたよ」という意味です。
3. なんでCORSエラーが起きるの?
CORSエラーが起きる理由はいくつかあります:
- サーバーが他のサイトからのアクセスを許可していない
例えば、http://mywebsite.com
からhttp://api.example.com
にアクセスしようとしたときに、api.example.com
が「このサイトからのアクセスは許可しないよ」と設定している場合。 - リクエストの種類が特別
普通のGET
リクエスト(データをもらうだけのリクエスト)はOKでも、POST
やDELETE
のような書き換えや削除を伴うリクエストだと、追加のチェックが入ります。そのときに失敗するとエラーになります。
4. CORSエラーの直し方
CORSエラーが出たら、サーバー側の設定を直すことで解決できます。以下のような方法があります:
サーバーに許可を与える設定を追加する
例えば、JavaのSpring Bootを使っているなら、以下のように書くと他のサイトからのアクセスを許可できます:
@CrossOrigin(origins = "http://mywebsite.com")
@RestController
public class MyController {
@GetMapping("/data")
public String getData() {
return "Hello from server!";
}
}
こうすると、http://mywebsite.com
からのアクセスはOKになります。
すべてのサイトからのアクセスを許可する方法(ただし注意が必要!)
全部のサイトからのアクセスを許可する場合は、以下のように設定します:
@CrossOrigin(origins = "*")
ただし、誰でもデータを取れてしまうので、セキュリティが低くなります。信頼できるサイトだけを許可するのが安全です。
5. まとめ
- CORSエラーは、セキュリティを守るために、他のサイトからのデータのやり取りを制限するルールです。
- サーバーの設定を調整すれば、他のサイトからのアクセスを許可できます。
- ただし、セキュリティを考えて必要なサイトだけを許可するようにしましょう。
もっと詳しく知りたい方は、Spring公式ドキュメントを見てみてくださいね。
他の記事が見たい方はこちら!↓↓↓