asp.net-web-api2 – 如何使用ajax发布到另一个域

我在一个网站(名为websiteA)上工作,他希望存储一些定制数据.

因此,我们意识到最好的方法是建立另一个网站(websiteB)来处理这个问题.因此,当用户访问websiteA时,它会调用websiteB并传递一些信息.

我以前使用的代码(我收到的这篇文章是How to get json from MVC4 C# with no javascript and no Ajax)是

using (var client = new HttpClient())
{
    var responseString = client.GetStringAsync("http://www.example.com/recepticle.aspx?withQueryString=true"); //I don't actually use the responseString 
}

关键是,当我提出这个问题时,留下了一条评论(现已删除),说明我应该使用WebApi.所以我做了……这就是出错的地方.

我创建了Web Api 2项目,并使用Ajax发布,它可以在我的本地主机上运行.我现在部署到我的测试环境,并意识到由于跨域原因问题我无法实现我想要的.

进一步阅读建议我不能使用json,但必须使用jsonp但是,jsonp只适用于我需要发布的地方(How to use type: “POST” in jsonp ajax call).

我想我可以使用’get’而忽略响应,但这感觉就像一个黑客……

很抱歉提出2个问题,但我认为它们非常相关.

问题1是:如果jsonp需要回调,它是否实际使用了get但是从目标机器(websiteB)调用了get?那么,jsonp实际上是指网站A将回调传递给websiteB而不是从websiteA发布到websiteB,而网站B实际上是在调用回调(实质上意味着,网站B正在调用网站A)?

问题2(主要问题):如何使用javascript / ajax / jquery将网站A中的信息发布到网站B.或者我是否必须在websiteB服务器上启用CORS然后使用ajax的帖子和json?

最佳答案 Dave Ward在他的博客上有关于如何做到这一点的完美文章:

http://encosia.com/using-cors-to-access-asp-net-services-across-domains/

简而言之,将以下内容放在webconfig中.

<system.webServer>
 <httpProtocol>
  <customHeaders>
   <add name="Access-Control-Allow-Origin" value="*" />
   <add name="Access-Control-Allow-Headers" value="Content-Type" />
  </customHeaders>
 </httpProtocol>
</system.webServer>
点赞