如何使用来自远程服务器的REST服务发布数据

时间:2014-07-10 11:03:10

标签: rest post https remote-server

我是REST的新手,所以如果我错过了一些明显的东西,请耐心等待。 任何指针都会非常感激,因为我有点迷失。

方案

我需要将一些数据发布到以下REST服务:https://api.dotmailer.com/来自我的网络应用程序https://myapp.com/

在测试期间,我能够从本地电脑上发布数据。

但是,只要我在远程服务器上将更新的应用程序发布到https://myapp.com/,我就无法再发布任何数据了。

到目前为止我尝试了什么

  1. 向远程服务器防火墙添加了规则,以允许传出流量使用https。没有解决问题。
  2. 禁用将http更改为https for myapp.com的网址重写规则。没有解决问题。
  3. 粘贴我用来在远程服务器上的浏览器中发布我的数据(https://api.dotmailer.com/v2/address-books/12345/contacts)的URL,输入正确的凭据,但无法访问它。 错误消息说“无法打开此网站。请求的网站不可用或无法找到。”如果我在本地PC上执行相同操作,则可以访问该URL。
  4. 使用Fiddler2监控两个电话。
  5. 我在下面列出了监控流程的结果:

    CALLS MADE FROM REMOTE SERVER
    ----------
    POST /bla.aspx HTTP/1.1
    Host: myapp.com
    Connection: keep-alive
    Content-Length: 10660
    Cache-Control: max-age=0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Origin: https://myapp.com
    User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
    Content-Type: application/x-www-form-urlencoded
    DNT: 1
    Referer: https://myapp.com/bla.aspx
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: en-US,en;q=0.8,it;q=0.6
    Cookie: ASP.NET_SessionId=xxx; Myapp=xxx; GUID=xxx
    
    CALLS MADE FROM LOCAL PC
    ----------
    POST /bla.aspx HTTP/1.1
    Host: localhost:xxx
    Connection: keep-alive
    Content-Length: 10656
    Cache-Control: max-age=0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Origin: http://localhost:60675
    User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
    Content-Type: application/x-www-form-urlencoded
    DNT: 1
    Referer: http://localhost:xxx/bla.aspx
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: en-US,en;q=0.8,it;q=0.6
    Cookie: __eqtUser=xxx; ASP.NET_SessionId=xxx; Myapp=xxx; GUID=xxx
    

    问题

    我相信第3点显示原因是远程服务器上的某些设置。

    有谁知道它可能是什么?还是我完全偏离轨道?

    更新

    我在接听电话的接收端与开发人员进行了交谈,他们可以监控传入的流量。

    他可以看到我的本地电话,但不能看到https://myapp.com提交的电话。

    在回复gmlime回复时,我已将以下内容添加到myapp.com web.config文件中,但没有帮助。

    <system.webServer>
     <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
      </customHeaders>
     </httpProtocol>
    </system.webServer>
    

    我应该把它放在层次结构的更高级别吗?

1 个答案:

答案 0 :(得分:0)

确保将其添加到响应中:

YourAddHeaderMethod("Access-Control-Allow-Origin", "*");

许多服务器拒绝从其他域发布,并可以终止连接。您可以从w3 docs for Access-Conrol-Allow-Origin和Mozzilla封面some scenarios了解有关它的更多信息。您可能需要与服务器管理员核实以排除跨域问题。