我需要通过ajax POST请求对另一个域站点的控制器类(MVC)的操作执行跨源资源共享(CORS),这是为了保持会话。我该如何实现这一目标?我通过将跨域属性设置为true来使用jQuery ajax调用。
如果你能给我看一个代码示例,那就更好了。
方案
域名A ----> Ajax Call - >域B保持域B的活动,直到用户从域A注销。对于这个Ajax调用,我打算在域B内使用JS文件
答案 0 :(得分:1)
你有两种可能性。您可以在域B上启用CORS并使用jQuery AJAX来访问它。请注意,CORS仅在现代浏览器中受支持;特别是在IE 10+中。 IE8和IE9有XDomainRequest对象,您可以使用它来做同样的事情,但它有一些限制。请参阅:http://caniuse.com/#search=cors。
您的第二种可能性是使用动态创建的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();
答案 1 :(得分:0)
域A到域B(会话保持活跃):分享会话太矛盾了。
对于安全功能Same Origin Policy,应保持CSRF。
答案 2 :(得分:-1)
您无法从“DomainA”中的网站向“DomainB”中的URL发送Ajax调用,浏览器不会让您,这是一项安全功能。 您可以做的是向“DomainA”发送Ajax请求,并让服务器端将该消息中继到“DomainB”。