我有一个主WebSite从另一个站点调用appi,因此Cross Domain成为一个问题。我正在尝试使用window.postMessage方法,但它似乎对我不起作用。
//This is the appi that sends the message.
$(document).ready(function() {
solution01.ini();
});
var solution01= {
ini:function(){
window.parent.postMessage('Hello World', 'http://webappi:0000');
},
}
//this is in the Main Page that have the IFrame that calls the appi above.
$(document).ready(function() {
mainSolution.ini();
});
var mainSolution = {
ini:function(){
window.addEventListener('message', mainSolution.handleResponse, false);
},
handleResponse:function(evt) {
if (evt.origin === 'http://webappi:0000')
{
alert("I'm happy to say: "+evt.data);
}else{
return;
}
},
}
问题不是任何警报。关于这个过程的任何指导,我错过了什么? PS。我知道window.addEventListener和Cross Browsing与IE和一些旧的Opera浏览器的问题,但首先我只需要使用firefox获得一个简单的'Hello World',但到目前为止还没有成功。问候。
答案 0 :(得分:4)
事实:我们的网络浏览器不允许通过跨域网络api / wcf调用传递参数。
我在使用web api时遇到了这个问题。
解决方案:对我有用的解决方案是,我修改了我的web api以允许参数通过跨域。我使用了这篇文章中的分步说明:http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api
如果它不起作用,请尝试通过nuget更新您的ASP.Net Web API包。