0

javascriptを提供していないノードサーバーにデータを送信する必要があります。サーバーを実行していますが、OPTIONSが送信されたことが表示されず、Chromeが別のドメインからのajaxを拒否しています。]

私のサーバー:

var http = require('http');
var router = require('router');
var routing = router();
var server = http.createServer(routing);
routing.options('*', function(request, response){
  console.log("OPTIONS BEING SENT");
  var origin = (request.headers.origin || "*");
  response.writeHead("204",
                     "No Content",
                     { "access-control-allow-origin": origin,
                     "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS",
                     "access-control-allow-headers": "content-type, accept",
                     "access-control-max-age": 10,
                     "content-length": 0
                   });
  response.end();
});

server.listen(7738);

私のjsは送信しますがjqxhr = $.get('localhost:7738/post/trackEvent/' + eventName);、オプションが送信されているのを確認できません。別のツールを使用してOPTIONSリクエストでサーバーにアクセスすると、期待どおりに機能します。

アップデート:

OPTIONSリクエストでサーバーをヒットすると、次のようにhttp://localhost:7738/post/trackEvent/MoneyInTheBank返されます。

HTTP/1.1 204 No Content
Content-Length: 0
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS
Access-Control-Allow-Headers: Content-Type, Accept
Access-Control-Max-Age: 10
Connection: close
4

1 に答える 1

2

プリフライトリクエストのみがOPTIONSヘッダーを送信し、ajaxリクエストはシンプルなヘッダーを持つシンプルなメソッドであるため、OPTIONSはサーバーに送信されません。

詳細については、 W3CMDNを確認してください

于 2012-09-09T04:40:17.197 に答える