如何使用ajax POST实现跨域资源共享(CORS)

How to do Cross-origin resource sharing (CORS) with ajax POST

本文关键字:资源共享 CORS 何使用 ajax POST 实现      更新时间:2023-09-26

我需要做一个跨域资源共享(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"。