如何将jquery请求从我的服务器直接转发到另一个服务器?
所以我有一个web客户机,ShazamClient,我想从中使用jQuery从远程web api ShazamService获取数据并将数据发布到该api。起初,我试图在jQuery中直接发布到ShazamService,但出现了与CORS相关的错误,而这在ShazamService上是不启用的。因此,为了解决这个问题,我想直接将请求从ShazamClient的如何将jquery请求从我的服务器直接转发到另一个服务器?,jquery,asp.net,asp.net-mvc,Jquery,Asp.net,Asp.net Mvc,所以我有一个web客户机,ShazamClient,我想从中使用jQuery从远程web api ShazamService获取数据并将数据发布到该api。起初,我试图在jQuery中直接发布到ShazamService,但出现了与CORS相关的错误,而这在ShazamService上是不启用的。因此,为了解决这个问题,我想直接将请求从ShazamClient的控制器或ApiController转发到ShazamService中相应的方法调用。所以我基本上想要: public class Sha
控制器
或ApiController
转发到ShazamService中相应的方法调用。所以我基本上想要:
public class ShazamClientController : ApiController // or Controller
{
public string Upload()
{
return Request.Forward(@"https:\\shazamservice.com\api\upload");
}
}
我在网上找到的大部分内容都与重定向等有关-有没有简单的方法可以做到这一点?您可以使用并重用发送给控制器的内容来向服务发出请求。好吧,如果您使用“代理”,这里有一个关于WebAPI
HTML/网页:
<h1 id="dataTarget"></h1>
<script>
....
//Because Web API wants it's own "keyless" format for [FromBody] data (=value)
var _data = { "": "data foo" };
$.post("api/values", _data, function(d) {
console.log(d);
$("#dataTarget").text(d.foo + ' ' + d.bar);
});
</script>
WebAPI的“魔力”:
Hth…ShazamService是否支持jsonp?我读过jsonp只支持GET(可能是过时的信息?),无论哪种方式,我发现它都很麻烦——HTTP错误不会触发jQuery“失败”处理程序,甚至不会触发“完整”处理程序;是的,我并不是说jsonp是一个好的选择,只是把它扔出去看看它是否满足了你的需要。这是一个好的建议,但在我的情况下似乎并不正确
// POST api/values
public async Task<JObject> Post([FromBody]string value)
{
using (var client = new HttpClient())
{
/*
* See http://www.jsontest.com/#echo for usage
* which serves as the "other" service you are "proxying"
*
* Echoed values will be used in front end html
*/
return JObject.Parse(await client.GetStringAsync("http://echo.jsontest.com/foo/hello/bar/world"));
}
}