我需要做一个跨域资源共享(CORS)通过ajax POST请求到另一个域站点的控制器类(MVC)的一个动作,这是保持会话。我该如何做到这一点?我使用jQuery ajax调用这通过设置跨域属性为true。
如果你能给我一个代码示例就更好了。
场景
域A ----> Ajax调用->域B以保持域B的会话,直到用户从域A注销。对于这个Ajax调用,我计划在域B内使用JS文件
你有两种可能。您可以在域B上启用CORS并使用jQuery AJAX访问它。请注意,CORS仅在现代浏览器中受支持;特别是在IE 10+中。IE8和IE9有XDomainRequest对象,你可以用它来做同样的事情,但它有一些限制。见:http://caniuse.com/搜索=歌珥。
第二种可能性是使用动态创建的iframe,并在其中创建一个表单,并将其发布到域b。代码将像这样:
$("<iframe id='ifr' style='display:none;'></iframe>").appendTo("body");
var iframe = $("#ifr");
iframe.load(function () {
//Do something after iframe has been sent
//At least we need to remove the iframe
iframe.remove();
});
var iframeContents = iframe.contents();
var iframeBody = iframeContents.find("body");
iframeBody.append("<form id='myForm' action='yourURLComesHere' method='post'></form>");
var iframeForm = iframeBody.children("form");
//If you need form values, you can do it like this:
iframeForm.append("<input type='hidden' name='inputName' value='inputValue' />");
iframeForm.submit();
域A到域B (keepalive of Session): Too contradictory to share the sessions.
应该维护同源策略安全特性CSRF。
你不能从"DomainA"的站点向"DomainB"的URL发送Ajax调用,浏览器不允许,这是一个安全特性。你所能做的就是发送一个Ajax请求到"DomainA",并让服务器端将该消息转发给"DomainB"。