私は2つのドメインを持っています:
- account.example.org
- 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ポリシーがリクエストを禁止していることを返します。PUT
DELETE
GET
POST
私はすでに試しました:
- app.useでヘッダーを設定する
- app.allで
- app.optionsを使用
反応なし。バグがあるようです...