如何将jquery请求从我的服务器直接转发到另一个?

时间:2014-07-10 03:33:28

标签: jquery asp.net asp.net-mvc

所以我有一个Web客户端ShazamClient,我想从中使用jQuery从远程web api ShazamService获取数据并将数据发布到远程web api。起初我在jQuery中直接尝试POSTing到ShazamService,但是得到了与CORS相关的错误,这在ShazamService上没有启用。因此,为了解决这个问题,我想直接将请求从ShazamClient的ControllerApiController转发到ShazamService中的相应方法调用。所以我基本上想要:

public class ShazamClientController : ApiController // or Controller
{
    public string Upload()
    {
        return Request.Forward(@"https:\\shazamservice.com\api\upload");
    }
}

我在网上找到的大部分内容与重定向等有关 - 有一种简单的方法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用HttpClient并重复发送到控制器的内容向服务发出请求。

答案 1 :(得分:0)

好吧,如果你"代理",这里有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 ValuesController {/ 1}}稍微修改了[FromBody]操作的默认支架:

// 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"));
    }
}

&#34;魔法&#34; WebAPI

Headers inspection

... H个