2009-11-16 82 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']?>/" /> 
相關問題