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