2013-08-30 68 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已成功。