AJAX调用跨域问题

时间:2012-11-01 09:59:45

标签: php ajax wordpress

我正在尝试使用ajax调用登录我的wordpress网站,我在previous question询问。它不应该回应任何回应。但每当我称之为ajax函数时,Firefox(firebug)显示200 OK红色。这必须是跨域问题。到目前为止尝试了太多但没有运气的东西。这是代码:

$.ajax({
         type: "POST",
         url: "http://path-to-wordpress/wp-login.php",
         data:myData
         success: function(data){

         },
        error: function (xhr, ajaxOptions, thrownError) {

        }   
});

任何建议都将受到赞赏。

4 个答案:

答案 0 :(得分:2)

我假设你的JS代码在abc.com,你的wordpress网站是dev.abc.com

要解决跨域问题,只需将以下代码添加到.htaccess文件到您的wordpress网站(dev.abc.com

SetEnvIf Origin "^http(s)?://(.+\.)?(abc\.com)$" origin_is=$0 
Header always set Access-Control-Allow-Origin %{origin_is}e env=origin_is

只需使用正确的网站名称替换(abc\.com)即可。例如:(google\.com)(yahoo\.com)

答案 1 :(得分:1)

在ajax调用中将dataType设置为JSONP,它将在跨域工作

参考ajax呼叫访问jQuery Ajax

答案 2 :(得分:1)

有一个名为$ .ajax的crossDomain的属性。请将其设置为true。

答案 3 :(得分:0)

您需要在wp-login.php页面添加CORS headers

Here's how to do it

但考虑到页面的性质,请格外小心:不允许所有来源(*),只允许您的网站。如果您允许所有人,您的用户可能会盗取他们的登录信息。