2009-11-16 40 views
15

我使用简单的jQueryjQuery的:我得到OPTIONS请求,而不是GET

$.get(....); 

这里,而不是领GET响应我得到的选项(如萤火虫网上查)

相同的代码是工作的罚款。苹果浏览器。看起来像Firefox的一些问题。

任何解决方法/解决方案来解决这个问题..

感谢

Kurund

+1

是你正在做的要求在同一个域作为你的页面的URL,或者是这种跨-域? – 2009-11-16 18:08:49

+0

这真是奇怪。最小的测试用例如何,所以我们有希望弄清楚发生了什么? – outis 2009-11-16 18:22:09

+1

所调用的URL是跨域的。 – 2009-11-16 18:40:56

回答

1

这可能是由于做跨域XMLHttpRequest JavaScript的限制。出于安全原因,这通常是不允许的。看到上面引用的问题,或者similar question I asked

为了解决这个问题:

希望帮助!

26

OPTIONS请求你所看到的是预检要求,你可以看到,在这里:

它的存在,因为你的要求一个跨域的XMLHttpRequest,因此浏览器必须检查您的请求是否被允许在远程服务器上或不吨。

有两个解决方案来解决这个问题(如上所述):

  • 实现用于OPTIONS请求与对应的Access-Control-*头响应
  • 使用JSONP请求而不是简单的JSON
+0

这似乎是我的情况。但是,我将如何实施OPTION请求的响应?我应该在哪里实施它?我的WebMethod甚至没有被调用。我是否需要重写某些内容? – Nawaz 2012-09-29 21:30:46

+0

@Nawaz:我不熟悉.NET,但也许这篇文章可以帮助你:http://encosia.com/using-cors-to-access-asp-net-services-across-domains/ – 2012-09-30 16:24:51

+5

我必须称“现代”浏览器的跨域行为变得荒谬。如果你有一个像couchdb这样的服务器发送Access-Control-Allow-Origin:*但是不实现OPTIONS,你不能做一个简单的AJAX GET,因为浏览器决定首先'检查'并且打破所有事情。开发人员知道GET会工作,但浏览器不相信他们! – Marc 2012-10-27 21:18:32

1

我有同样的问题,我想到的原因是在HTML <head>部分我已经设置了基本元素到这个

<base href="http://local.develepment.url" /> 

其中我变为

<base href="http://<?php echo $_SERVER['HTTP_HOST']?>/" /> 
相关问题