2

我正在尝试使用 REST 方法将我的家设置为离开模式。我正在尝试使用 cURL,但我不断收到“重定向后连接被拒绝”。

我的代码:

$ch = curl_init("https://developer-api.nest.com/structures/$id?auth=$access_token");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"away":"away"}');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_STDERR, $fp);
curl_setopt($ch, CURLOPT_PUT, true);

echo curl_exec($ch);

错误日志(我的 id 和访问代码已更改):

* About to connect() to developer-api.nest.com port 443 (#0)
*   Trying 54.235.247.171... * connected
* Connected to developer-api.nest.com (54.235.247.171) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSL connection using TLS_DHE_RSA_WITH_AES_128_CBC_SHA
* Server certificate:
*   subject: CN=developer-api.nest.com,OU=Domain Control Validated
*   start date: Apr 10 21:26:03 2014 GMT
*   expire date: Apr 10 21:26:03 2015 GMT
*   common name: developer-api.nest.com
*   issuer: CN=Go Daddy Secure Certificate Authority - G2,OU=http://certs.godaddy.com/repository/,O="GoDaddy.com, Inc.",L=Scottsdale,ST=Arizona,C=US
> PUT /structures/asdfghjkl?auth=c.asdfghjkl HTTP/1.1
Host: developer-api.nest.com
Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue

< HTTP/1.1 100 Continue
< HTTP/1.1 307 Temporary Redirect
< Content-Type: application/json; charset=UTF-8
< Access-Control-Allow-Origin: *
< Cache-Control: private, no-cache, max-age=0
< Location: https://firebase-apiserver03-tah01-iad01.dapi.production.nest.com:9553/structures/asdfghjkl?auth=c.asdfghjkl
< Connection: close
< Content-Length: 0
< 
* Closing connection #0
* Issue another request to this URL: 'https://firebase-apiserver03-tah01-iad01.dapi.production.nest.com:9553/structures/asdfghjkl?auth=c.asdfghjkl'
* About to connect() to firebase-apiserver03-tah01-iad01.dapi.production.nest.com port 9553 (#0)
*   Trying 54.167.139.72... * Connection refused
* couldn't connect to host
* Closing connection #0

知道为什么初始连接可以工作,但重定向不行吗?

4

1 回答 1

3

我发现问题是我的网络服务器在出站端阻止了端口 9553,所以 firebase 没有拒绝我的连接,它一直是我的防火墙。打开端口 9553 后,一切正常。

于 2014-11-13T21:46:54.730 回答