2011-01-11 10 views
7

Tôi chỉ định rõ ràng một POST và tôi không thấy dữ liệu bài đăng trong Yêu cầu và hơn thế nữa chỉ định nó có OPTIONS.Yêu cầu JQuery POST chuyển thành OPTIONS. Tại sao?

Phản hồi phải là HTML chỉ định người dùng phù hợp với Truy vấn ở định dạng bảng. Tôi đang cố đăng và đọc html để tạo hộp nhập tự động hoàn tất.

này Bộ luật Jquery:

$.post('https://internal.company.com/data/displayUserList', 
    { Email: "", Name: "%GEORGE%"}, 
    function(responseText, textStatus) { 
     console.log("Response:\n" + responseText + textStatus) 
    } 
); 

Yêu cầu bắt bởi FireBug1.6.1 (Firefox)

OPTIONS /data/displayUserList HTTP/1.1 
Host: internal.company.com 
User-Agent: Mozilla/5.0 Firefox/3.6.8 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 115 
Connection: keep-alive 
Origin: null 
Access-Control-Request-Method: POST 
+0

Có nhiều câu hỏi liên quan về vấn đề đang được đề cập trong jQuery trên SE. Xem "Liên quan" Giải pháp có thể được thảo luận tại đây: http://stackoverflow.com/questions/2699277/post-data-to-jsonp – OneWorld

Trả lời

10

Điều này có thể xảy ra nếu bạn vi phạm các hạn chế same origin policy. Tiêu đề yêu cầu Access-Control-Request-Method làm tôi nghĩ đây là trường hợp. Tôi thấy rằng bạn chỉ định địa chỉ đầy đủ https://internal.company.com/data/displayUserList trong yêu cầu đăng bài của bạn. Đảm bảo rằng trang lưu trữ tập lệnh này cũng có nguồn gốc từ https://internal.company.com. Tốt nhất là sử dụng địa chỉ tương đối:

$.post('/data/displayUserList', { Email: "", Name: "%GEORGE%" }, 
    function(responseText, textStatus) { 
     console.log("Response:\n" + responseText + textStatus); 
    } 
); 
+0

Có. Tôi đang cố gắng đăng URL trong một trang web khác, nhưng có miền trên cùng là "company.com", tôi sẽ kiểm tra xem "document.domain" có giống nhau hay không. Ngoài ra, tôi nhận thấy có ít thông tin cookie được gửi khi "https://internal.company.com/data/displayUserList" được kích hoạt từ trình duyệt. Có cách nào tôi có thể nắm bắt chúng và gửi nó với yêu cầu này không? – hashg

+0

Giao thức có giống nhau không? Lưu ý rằng HTTP vs HTTPS vi phạm chính sách gốc. Theo như các cookie có liên quan, chúng sẽ được tự động gửi cùng với yêu cầu AJAX nếu các cookie đó được thiết lập với thuộc tính miền bằng miền trên cùng để chúng có thể được chia sẻ giữa các tên miền đó. –

+0

Có, giao thức là HTTPS. Tôi nhận thấy cookie không được chọn ngoài vấn đề OPTIONS. Tôi có nên thay đổi bất cứ điều gì trong cuộc gọi? – hashg