APIエンドポイントにGETリクエストを送信する際に問題が発生しているようです。レールの裏側で何らかのセキュリティが働いていることがわかっています。私はReact-Railsを使っていて、私のcomponentDidMount
ではAPIエンドポイントへのajax呼び出しを行っています。私はX-Auth-Token
を私のヘッダーにも入れています。Ajax APIエンドポイントでCORSの問題が発生しました。
マイコンソールエラー:
XMLHttpRequest cannot load "/api/end/point..." Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost:3000 ' is therefore not allowed access. The response had HTTP status code 401.
私のAJAX呼び出しがあなたのフロントエンドが任意の起源(すべてのクライアント)からの要求を行いますので、あなたが任意の起源からCORSを有効にする必要が
$.ajax({ url: "my/api/endpoint...", headers: {"X-Auth-Token": "My API token..."},
success: (response) => { console.log(response); } })
おかげウルサスは、私は、ラックCORSの宝石、あなたは運上記と依然として記述されたコードを追加しました。私のprotect_from_forgeryには::null_sessionもあります。これは、私のapplication_controllerで重要です。他に何が間違っているのでしょうか? – John
私はレール3/4の答えを更新しました。それを試して、サーバーを再起動してください。 – Ursus
私はレール5を使用していますが、サーバーを再起動しても運が悪いことはありません。 「XMLHttpRequestはhttp:// api/end/point ...(私のapiエンドポイント)を読み込めません。プリフライトリクエストへの応答はアクセスコントロールのチェックを通過しません:いいえ 'Access-Control-Allow-Origin'ヘッダーHTTPのステータスコードは401です。 "http:// localhost:3000"のアクセスは許可されていません。ありがとう! – John