我在一个网站(名为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>