选项http方法在Heroku上给出一个空响应

时间:2014-04-02 13:51:52

标签: heroku cors

当我在本地做事时,我的CORS调用工作正常

$ curl -i -X OPTIONS "http://localhost:3000/api/v1/login"
HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: http://localhost:9000
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET,PUT,POST,DELETE,OPTIONS
Access-Control-Allow-Headers: Content-Type
Content-Type: text/plain
Content-Length: 2
Set-Cookie: connect.sid=blablabla; Path=/; HttpOnly
Date: Wed, 02 Apr 2014 13:46:30 GMT
Connection: keep-alive

OK

但是当我在heroku上部署并尝试相同时,它不再起作用了:

$ curl -i -X OPTIONS "http://<myapp>.herokuapp.com/api/v1/login"
curl: (52) Empty reply from server

知道那可能是什么原因?

2 个答案:

答案 0 :(得分:2)

我为此提交了一张票,事实证明,事情并不容易排除故障,但答案非常简单:使用https代替http来打电话

答案 1 :(得分:0)

没有响应可能是由与此类似的配置引起的:

OPTIONS

这意味着nginx会在没有正确响应的情况下关闭连接,这就是为什么调试这么困难的原因。

在配置中搜索444返回代码。如果您发现上述内容,只需将try { OracleConnection con; con = new OracleConnection(); con.ConnectionString = "DATA SOURCE=<DSOURCE_NAME>;PERSIST SECURITY INFO=True;USER ID=******;PASSWORD=*******"; con.Open(); } catch (OracleException ex) { Console.WriteLine("Oracle Exception Message"); Console.WriteLine("Exception Message: " + ex.Message); Console.WriteLine("Exception Source: " + ex.Source); } catch (Exception ex) { Console.WriteLine("Exception Message"); Console.WriteLine("Exception Message: " + ex.Message); Console.WriteLine("Exception Source: " + ex.Source); } 添加到列表中。