2013-08-30 51 views
1

我试图设置CORS与节点中的Socket IO一起使用。不幸的是,要求不断得到由Chrome取消:CORS - Chrome取消简单的GET请求

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 

如果我在新标签中打开了网址,我得到一个好得多的响应:

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的工作?

+0

您使用的是自签名证书吗?你见过这个:https://code.google.com/p/chromium/issues/detail?id=141839? –

+0

嗨@RayNicholus - 不使用自签名证书或类似的东西。 –

+0

为什么downvote? –

回答

1

因此,解决办法是,以确保我们在配置此Socket IO在节点JS到底正确设置:

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

..然后在Nginx的结束做任何时髦与CORS,根本不在

从Nginx配置中删除所有发生的add_header Access-Control-Allow已成功。