1

我正在尝试使用我在上一个问题中提出的 ajax 调用登录到我的 wordpress 网站。它不应该做出任何回应。但是每当我调用这个 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

4 回答 4

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)

于 2012-11-01T10:12:20.037 回答
1

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

有关 ajax 调用的参考,请访问jQuery Ajax

于 2012-11-01T10:05:20.693 回答
1

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

于 2012-11-01T10:21:08.933 回答
0

您需要在页面中添加CORS 标头wp-login.php

这是怎么做的

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

于 2012-11-01T10:02:15.483 回答