2012-11-04 22 views
0

我想一些原始數據發送到我的子域名:CORS PUT:未發現jQuery.ajax

$.ajax({ 
    url: "http://accounts.example.com:3000/me", 
    type: "PUT", 
    data: { wabo: "chabo" }, 
    dataType: "json", 
    xhrFields: { 
     withCredentials: true 
    } 
}); 

瀏覽器現在將兩個請求:

  1. OPTIONS到accounts.example .COM:3000 /我去檢查,如果CORS標頭是有效的
  2. PUT發送數據

第一個失敗,HTTP 404未找到。 的CORS repsonse頭看起來有效:

HTTP/1.1 404 Not Found 
X-Powered-By: Express 
Access-Control-Allow-Origin: http://node.example.com:3000 
Access-Control-Allow-Methods: HEAD, GET, POST, PUT, DELETE, OPTIONS 
Access-Control-Allow-Headers: Content-Type, X-Requested-With, Origin, Accept 
Access-Control-Allow-Credentials: true 
Content-Type: text/plain 
Set-Cookie: connect.sid=s%3Aru8njoU2ZAnoKL2W2w%2B0BHF7.%2Fe%2FQI5f6NKRWQvWlcYEkMG7HHSxxj0haFDBUID2g45A; Domain=.example.com; Path=/ 
Date: Sun, 04 Nov 2012 11:31:22 GMT 
Connection: keep-alive 
Transfer-Encoding: chunked 

在app.js我節點的環境,我有:

app.all('*', function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', 'http://node.example.com:3000'); 
    res.header('Access-Control-Allow-Methods', 'HEAD, GET, POST, PUT, DELETE, OPTIONS'); 
    res.header('Access-Control-Allow-Headers', 'Content-Type, X-Requested-With, Origin, Accept'); 
    res.header('Access-Control-Allow-Credentials', 'true'); 
    next(); 
}); 

var me = require('./me'); 
app.get('/me', loadUser, me.show); 
app.put('/me', loadUser, me.update); 

從子域獲取數據僅僅是沒有問題的發送 任何想法,我忘記了什麼?

問候,博多

回答

4

試試這個:

app.all('*', function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', 'http://node.example.com:3000'); 
    res.header('Access-Control-Allow-Methods', 'HEAD, GET, POST, PUT, DELETE, OPTIONS'); 
    res.header('Access-Control-Allow-Headers', 'Content-Type, X-Requested-With, Origin, Accept'); 
    res.header('Access-Control-Allow-Credentials', 'true'); 

    if(req.method.toLowerCase() === "options") { 
     res.send(200); 
    } 
    else { 
     next(); 
    } 
}); 
+0

謝謝你這有助於:) – bodokaiser