2010-09-28 227 views
2

我在godaddy共享的linux服务器上遇到了ajax请求的奇怪行为。 该请求可以在我测试过的很多其他服务器上正常工作,但在这个服务器上,由于某种原因GET请求变成了OPTIONS请求。Ajax GET请求变成OPTION请求

这里的(使用的mootools 1.1)的js代码:

你可以看到,该方法被定义为GET。然而,当我看到使用Firebug发生的请求时,它会作为OPTIONS请求传递。任何想法如何或为什么会发生?

+0

'> GET请求变成一个OPTIONS请求一些reason.' 你是否偶然桥接http到https的协议(反之亦然)? – 2010-09-28 19:56:32

+0

嗨Dimitar--不,它都是直的http。 – julio 2010-09-28 19:57:15

+0

'myurl'是否与源域匹配(例如,myurl有www.domain.com,您正在通过domain.com进行浏览) – 2010-09-28 20:05:35

回答

2

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

  1. 协议桥接(从https到http或反之亦然),由此请求的URL协议的不同而不同请求的URL
  2. 子域差(例如,从domain.com请求www.domain.com)

底线:为了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/

等等等等