Ajax GET请求变为OPTION请求

时间:2010-09-28 19:02:20

标签: php javascript ajax mootools

我在godaddy共享linux服务器上遇到ajax请求时遇到了奇怪的行为。 该请求在我测试过的许多其他服务器上都能正常工作,但在这一点上,由于某种原因,GET请求变成了OPTIONS请求。

这是js代码(使用mootools 1.1):

var a = new Ajax(myurl,{
            method: 'get',
            onComplete: function( response ){
                $('my_div').style.display="none";
                output_display( response );
            }
        });
        a.request();

您可以看到该方法被定义为GET。然而,当我看到Firebug发出请求时,它会作为OPTIONS请求传递。关于如何或为何会发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:2)

通常,在XHR(ajax)请求期间出现这种行为有两个原因。

  1. 协议桥接(从https到http,反之亦然),其中请求URL协议与请求的URL不同
  2. 子域名差异(例如,来自www.domain.com的domain.com请求)
  3. 底线:要使XHR正常工作,由于访问控制限制,协议和主机名需要匹配。

    读取:

    http://www.w3.org/TR/access-control/#cross-origin-request-with-preflight0

    围绕跨域策略限制的方法: http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/

    等等。