2

私は2つのドメインを持っています:

  1. account.example.org
  2. app.example.org

ここでHTTP DELETE、app.example.orgからaccounts.example.org/sessionへのリクエストを実行します。

$.ajax({
  url: "http://accounts.example.org/session",
  type: "DELETE"
});

何も違いはありません。CORSを許可するaccounts.example.orgのヘッダーは次のとおりです。

Access-Control-Allow-Origin: http://app.example.org
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: X-Requested-With, Content-Type

そのため、AJAX呼び出しは失敗し、CORSヘッダーに問題があることを通知します... AJAXオプションを詳しく調べたところ、jQueryが直接実行しないことがわかりましたDELETE

Request URL:http://accounts.example.org/session
Request Method:OPTIONS
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Access-Control-Request-Headers:origin, accept
Access-Control-Request-Method:DELETE
Connection:keep-alive
Host:accounts.example.org
Origin:http://app.example.org
Referer:http://app.example.org/

誰かがこれが何であるか知っていますか?

サーバーバックエンドは、フレームワークとしてエクスプレスを備えたnode.jsです。

よろしく

アップデート

これで、問題を指定できます。

問題は、ブラウザがand (および動作)のOPTIONS前にリクエストを実行することです。これは、ブラウザが実際のリクエストを実行する前にCORSポリシーを確認するために行われます。何らかの理由で、expressはこの要求を処理しません(応答ヘッダーは空です)。そのため、ブラウザはCORSポリシーがリクエストを禁止していることを返します。PUTDELETEGETPOST

私はすでに試しました:

  1. app.useでヘッダーを設定する
  2. app.allで
  3. app.optionsを使用

反応なし。バグがあるようです...

4

1 に答える 1

2

何のブラウザですか?少なくともクロムで動作することは知っています。これは、jQuery のホームページで PUT と削除について述べられていることです。

"作成するリクエストのタイプ ("POST" または "GET")。デフォルトは "GET" です。注: PUT や DELETE などの他の HTTP リクエスト メソッドもここで使用できますが、すべてのブラウザーでサポートされているわけではありません。 ."

于 2012-08-18T08:28:46.417 に答える