2014-10-01 39 views
5

Vấn đề này được đề cập trong stackoverflow một chục lần rồi, nhưng tôi có một vấn đề khác.Chrome nói không có tiêu đề 'Access-Control-Allow-Origin', nhưng tiêu đề là có

Chrome trước tiên thực hiện cuộc gọi "TÙY CHỌN" để nhận tiêu đề. Như bạn có thể thấy, các tiêu đề chính xác ở đó.

enter image description here

Đối với một số lý do, Chrome không chú ý đến tiêu đề và hủy bỏ các yêu cầu thực tế trong cùng một cách thức mà nó sẽ nếu tiêu đề là không có gì cả.

enter image description here

Trang thực sự làm cho ba cuộc gọi và tò mò, một trong số họ làm việc.

enter image description here

Vậy câu hỏi là, khi tiêu đề thực sự là có, tại sao Chrome không tôn trọng nó? Tôi có thể làm gì để gỡ lỗi nó?

Cập nhật

Tôi đã thử thêm Access-Control-Allow-Methods vì vậy bây giờ phản ứng tiêu đề từ các tùy chọn gọi bao gồm các tiêu đề phản ứng:

Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept 
Access-Control-Allow-Methods:POST, GET, OPTIONS 
Access-Control-Allow-Origin:* 

Kết quả là như nhau.

Thiết lập tiêu đề ở phía máy chủ

tôi đặt tiêu đề trên serverside trên mọi yêu cầu (trong Global.asax.cs Application_BeginRequest)

Response.Headers.Add("Access-Control-Allow-Origin", "*"); 
Response.Headers.Add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
Response.Headers.Add("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); 

Sau khi điều tra với Fiddler

Tôi đã xem xét yêu cầu và phản hồi thô và thấy điều gì đó đáng ngạc nhiên: Lỗi này là lỗi HTTP 500 đơn giản từ ứng dụng ication. Có thể do lỗi HTTP 500 không chứa tiêu đề phù hợp, Chrome không hiển thị lỗi được trả lại mà thay vào đó hiển thị lỗi liên quan đến tiêu đề.

trả lời

Vì vậy, trong kết luận, nếu Chrome cho biết No 'Access-Control-Allow-Origin' header nó thực sự có thể che đậy một HTTP 500 lỗi. Điều này có thể được xác định bằng cách kiểm tra yêu cầu và phản hồi trong Fiddler.

+0

Và mã ... mã ở đâu ?? – Hackerman

+1

Cũng cần có tiêu đề 'Access-Control-Allow-Methods'. Tôi không nhìn thấy nó trong ảnh chụp màn hình. – monsur

+0

@RobertRozas Cảm ơn. Vấn đề này là về lý do tại sao Chrome hoạt động như vậy, vì vậy tôi cố gắng không bao gồm mã sẽ tập trung khỏi vấn đề mà tôi đang cố gắng hiểu. Nhưng tôi có thể đăng các yêu cầu/phản hồi thô nếu cần? –

Trả lời

2

Nếu Chrome nói No 'Access-Control-Allow-Origin' header, nó thực sự có thể bao gồm lỗi HTTP 500. Điều này có thể được xác định bằng cách kiểm tra yêu cầu và phản hồi trong Fiddler.

+0

NÀY. Điều đó có được chỉ định ở đâu đó mà một trình duyệt có thể làm bất cứ điều gì trên 500? – enpenax

Các vấn đề liên quan