如何使用ajax POST进行跨源资源共享(CORS)

时间:2014-03-18 08:53:27

标签: javascript jquery ajax cross-domain cors

我需要通过ajax POST请求对另一个域站点的控制器类(MVC)的操作执行跨源资源共享(CORS),这是为了保持会话。我该如何实现这一目标?我通过将跨域属性设置为true来使用jQuery ajax调用。

如果你能给我看一个代码示例,那就更好了。

方案

域名A ----> Ajax Call - >域B保持域B的活动,直到用户从域A注销。对于这个Ajax调用,我打算在域B内使用JS文件

3 个答案:

答案 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”。