2
我的應用程序目前可以通過標準的JQuery Ajax GET請求來訪問我們的API,並獲取良好的數據。據我所見,CORS已經在遠程服務器上正確實施。下面是響應頭:請幫我理解Ajax請求與Backbone fetch()
company_client_envelope_id: 88764736-6654-22e4-br344-a1w2239a892d
access-control-allow-headers: X-Requested-With, Cookie, Set-Cookie, Accept, Access-Control
Allow-Credentials, Origin, Content-Type, Request-Id , X-Api-Version, X-Request-Id,Authorization, COMPANY_AUTH_WEB
access-control-expose-headers: Location
response-time: 55
request-id: 88764736-6654-22e4-br344-a1w2239a892d
company_api_version: 0.01.09
server: localhost
transfer-encoding: chunked
connection: close
access-control-allow-credentials: true
date: Sun, 09 Feb 2014 14:44:05 GMT
access-control-allow-origin: *
access-control-allow-methods: GET, POST
content-type: application/json
但是,使用骨幹,並呼籲通過獲取(相同GET請求)導致以下CORS錯誤:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
我想不出有什麼區別。這兩個請求都從本地主機運行。
headers: {
"accept":"application/json"
}
和模型和收集聲明的情況下,我發出像這樣的標題:
在AJAX查詢的情況下,通過API傢伙,請求被髮送以下
MyApp.someCollection = Backbone.Collection.extend(
{
model:MyApp.someModel,
headers: {
'Accept':'application/json',
'withCredentials': 'true'
},
url: MYCOMPANY_GLOBALS.API + '/endpoint'
});
和我的獲取很簡單:
someCollection.fetch();
============================== = 添加響應於:@ddewaele
這些是從網絡選項卡中的標頭:
Request URL:http://api-blah.com:3000/
Request Headers CAUTION: Provisional headers are shown.
Accept:application/json
Cache-Control:no-cache
Origin:http://localhost
Pragma:no-cache
Referer:http://localhost/blah/blah/main.html
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107Safari/537.36
沒有預飛行或遠程標頭從API服務器:
許多感謝,
您可以發佈chrome開發工具(網絡選項卡)的請求和響應頭文件嗎?對於jquery和backbone都可以使用pre-flight OPTIONS調用和隨後的GET調用。 – ddewaele
@ddewaele 上面添加了額外的頭信息。 (對不起,如果你有很多通知 - 我試圖找出在StackOverflows系統中添加代碼的正確方法時遇到問題 – Wittner
也剛剛注意到開發工具的網絡選項卡中的狀態(取消) – Wittner