0

データを別のドメインに POST し、アクションによって返された確認メッセージを受け取りたいです。したがって、CORS を機能させるために、Rails コントローラーで OPTION HTTP メソッド (POST と同じパス上) を処理するためのオプション アクションを用意しました。これは現在次のようになっています。

def options
  headers['Access-Control-Allow-Origin'] = "*"
  headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, OPTIONS'
  headers['Access-Control-Max-Age'] = '100'
  headers['Access-Control-Allow-Headers'] = '*, x-requested-with, content-type, accept, origin, referer, user-agent'
  render :text => '', :content_type => 'text/plain'
end

私のjquery ajaxリクエストは次のようになります:(coffeescript)

$.ajax
  type: 'POST'
  url:  'http://my-other-domain.com/'
  data: data
  contentType: "application/json; charset=UTF-8"
  crossDomain: true
  success: (response) => 
    if response.data_saved
      ...
  error: () => ...

しかし...うまくいきません。

OPTIONS リクエストは機能しているようAccess-Control-Allow-Origin:*で、サーバーは POST されたデータを受信して​​処理しますが、Chrome は引き続きスローします

XMLHttpRequest cannot load http://my-other-domain.com/. Origin http://my-main-domain.com is not allowed by Access-Control-Allow-Origin.

コンソールで、エラー コールバックを起動します。

私は何が欠けていますか?

4

2 に答える 2

2

ヘッダーはAccess-Control-Allow-Origin: *、プリフライトOPTIONS応答だけでなく、すべての応答に含める必要があります。POST応答にそのヘッダーを追加すると、問題が修正されるはずです。

(また、「*」はの有効な値ではありませAccess-Control-Allow-Headersんが、何も壊してはならないことに注意してください)

于 2012-09-27T15:42:32.770 に答える
0

そのような問題、クロス ajax 問題があったことを覚えています。php では、header("..."); で解決しました。それから私 .getJSON はJqueryでメソッドを使い始めました

于 2012-09-27T13:03:45.367 に答える