2016-12-17 9 views
0

他の質問と回答を見てから、私は彼らが本当にやりたいことをカバーしていないことを知っているので、なぜ新しい質問をしていますか?サブドメイン用のCORSの処理ラック内のAjaxリクエスト

私は自分のサブドメイン(api.localhost:3000)に自分のapiをホストするという考えで、ラック用ミドルウェアと一致するサブドメインを構築しました。

これはほとんどの場合、私がajaxリクエストを送信しようとすると動作しますが、WebブラウザはCORSについてうっかりします。

サブドメインのCORSにサブドメインを追加するにはどうすればよいですか?これについてはラックで作業しています。

答えて

1

CORSまたはjsonpの使用を防ぐことができる場合は、私がお勧めします。最善の解決策は、API /安らかなリクエストを処理するためのサブディレクトリを定義することです。私は同様の状況を抱えていました。あなたがCORSに身を委ねると、ヘッダーは常にAccess-Control-Allow-Originを設定します。

可能であれば、これらの制限は避けてください。ちょうど私の経験。がんばろう!

私のような何かをするだろう:

http://www.domain.com/rest/api/items/1

ウェブサービスが処理されている場合、残りはある

。あなたがそれらを必要としない場合、サブドメインから離れてください。

CORSを絶対に使用する必要があり、要求があなたとあなただけが処理していることを知っている場合は、jsonpを使用して逃げることができます。

JSONP

JSONPは、基本的にコールバック関数を使用してjavascriptオブジェクトでリクエストをラップします。このアプローチを使用して処理できるデータ量には制限がありますが、CORSを設定することなくクロスドメイン要求を処理するための迅速な方法です。ここで

はJSONPリクエストの例である:

$.ajax({ 
      type: "GET", 
      url: "http://www.domain.com/rest/WEB055S?callback=?", 
      data: args, 
      contentType: "application/json; charset=utf-8", 
      dataType: "jsonp"}). 
      done(function(data){ 
       alert(data.ERROR); 
      })... 
+0

興味深い、jqueryのせずにこれを行う方法ですか? – Thermatix

+0

私が知っているクロスドメイン用のPHPにはいくつかのAPIがありますが、CORSはまだ設定する必要があります。 jsonpは私が知っている唯一のクライアント側のハックですが、サーバ側のクロスドメイン機能が必要な場合はブラウザがクロスドメインであることを知る必要がないので、人生をより簡単にすることができます。 allow all cross-originディレクティブで '.htaccess'や' http.conf'を設定して、うまくいくはずです。 – yardpenalty

+0

私はちょうどあなたがサーバー側のプログラミングに限定されているのを見て嫌いだよ。 – yardpenalty

関連する問題