我已经阅读了许多关于“在不同域上发布请求”问题的“解决方案”,也称为“跨域发布”,但我仍然无法像他们说他们修复它那样工作。
通过阅读所有关于这个问题的文章,我现在知道为什么会这样,但我仍然需要它以安全的方式在我的项目中工作,而不使用黑客动作或类似的东西。我想如果有人知道如何使它起作用,来帮助我们,我的意思是“我们”,因为我相信仍然有些人没有弥补。
我的情况:我有一个托管在 domainA 上的 webapp,它对 domainB(mvc4 webAPI)进行 ajax post 调用。ajax post 调用如下所示:
var profile = { Id:"1234567890", Name:"Name_01"}
$.ajax({
type: "POST",
url: 'http://domainB/api/Profile',
data: JSON.stringify(profile)
});
@domainB 我用来设置自定义响应标头:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*"/>
<add name="Access-Control-Allow-Headers" value="X-Requested-With" />
<add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS"/>
</customHeaders>
</httpProtocol>
</system.webServer>
@domainB webAPI 发布方法我有这个:
public void Post(dynamic newProfile)
{
...
}
因此,在激活/启动 ajax 调用时,在 webAPI 项目的调试模式下,我Operation could destabilize the runtime
在 webAPI 中的 JsonFX.Serilization.DataWriter 处收到 SerializationException,并且在浏览器中出现错误,我得到
XMLHttpRequest cannot load http://domainA/api/Profile. Origin http://domainB is not allowed by Access-Control-Allow-Origin.
我正在 Fiddler 上捕获请求并响应,我看到Access-Control-Allow
响应端根本没有标头。
我写了我正在使用的东西,现在因为这还没有弄清楚我应该怎么做才能使ajax post调用从domainA工作到domainB,或者什么是真正的解决方案。