我正在尝试在另一个域上调用WCF数据服务。该服务使用NTLM,返回的JSON取决于经过身份验证的用户。我正在使用node-http-proxy来克服跨域问题。 服务,让我们说
的http:// otherdomain:1234 /dataservice.svc/getData
返回类似
的JSON {
"description": "xxxxx",
"data": {
"subclass": [
[
{
"name": "xxxxx",
"keys": {
},
"children": "xx"
}
]
]
},
"parameter": "someparam",
"option": {
"someoption": []
}
}
对于未配置数据的用户,它只返回一个空的JSON骨架,如
{
"description": "",
"data": {},
"parameter": "",
"option": {}
}
在我的代理服务器中,我将target
设置为http://otherdomain:1234并将服务称为
的http:// 本地主机:8003 /dataservice.svc/getData
来自我的客户端应用程序。这非常好(从应用程序和浏览器直接)。 NTLM身份验证正在运行;没有CORS问题。我像第一个例子那样得到了JSON。
但是当我使用我的IP地址调用代理时,就像这样
的http:// 10.203.147.21:8003 /dataservice.svc/getData
我只获得空的JSON骨架,没有其他错误。这里发生了什么?使用localhost但不使用IP。
有趣的是,这也发生在实际的服务上;即如果我使用数据服务器的IP地址(直接从浏览器调用)而不是名称,我得到一个类似的空JSON。
的http:// 10.203.147.34:1234 /dataservice.svc/getData
有人能解释一下这里发生了什么吗?如何解决这个问题?
答案 0 :(得分:0)
在changeOrigin
true
对象中设置options
至httpProxy
已解决此问题。现在,代理能够正确地协商来自不同域的NTLM。
猜猜服务器正在为来自不同来源的请求返回空响应。