1

ノードでソケット IO と連携するように CORS をセットアップしようとしています。残念ながら、リクエストはChromeによってキャンセルされ続けます:

GET https://example.com/zebra/8601/socket.io/1/?key=example123&t=1377831596484 HTTP/1.1
Origin: https://example.io
Referer: https://example.io/example
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36

URL を新しいタブで開くと、より適切な応答が得られます。

HTTP/1.1 200 OK
Server: nginx/1.4.1
Date: Fri, 30 Aug 2013 03:00:12 GMT
Content-Type: text/plain; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, PUT, POST, OPTIONS
Access-Control-Allow-Headers: Authorization,Content-Type,Accept,Origin,Referer,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,If-Modified-Since

ただし、これは実際のクロスオリジン リクエストですが、失敗するだけです。

Nginx の設定は次のとおりです。

location ~ ^/zebra/(\d+)(?:/(.*))?$ {
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Credentials true;
    add_header Access-Control-Allow-Methods "GET, PUT, POST, OPTIONS";
    add_header Access-Control-Allow-Headers "Authorization,Content-Type,Accept,Origin,Referer,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,If-Modified-Since";
}

CORS で動作するように構成するにはどうすればよいですか?

4

1 に答える 1

1

したがって、解決策は、Node JS 側でこの Socket IO 設定を正しく構成していることを確認することでした。

io.configure(function() {
  io.set('origins', '*:*');
});

..そして、Nginx側でCORSでファンキーなことは何もしませ

add_header Access-Control-AllowNginx構成からすべての出現を削除すると、うまくいきました。

于 2013-08-31T10:02:23.060 に答える