2011-12-30 11 views
5

Tôi đang cố thực hiện yêu cầu miền chéo với Safari trên Windows. Phiên bản Safari của tôi là 5.1.2.Cho phép yêu cầu tên miền chéo trong Safari và Chrome? Phản hồi của máy chủ so với đối số dòng lệnh

Đây là câu hỏi cổ điển. Tôi đọc ở nhiều nơi Chrome và Safari cho phép các yêu cầu miền chéo miễn là Máy chủ phản hồi với tiêu đề followin trong phản hồi

Access-Control-Allow-Origin: * 

Tôi đã đọc bài đăng này. How to allow cross-domain requests in Safari? và nhiều trang khác trên trang web stackoverflow.

Tuy nhiên, không ai trong số họ trả lời câu hỏi của tôi.

Tôi đang gặp sự cố với Chrome VÀ Safari thực hiện yêu cầu AJAX tên miền chéo mặc dù tôi đang gửi tiêu đề cần thiết trở lại từ máy chủ.

Cuối cùng tôi đã chạy Chrome bằng "--disable-web-security". Sau đó, nó hoạt động.

Câu hỏi của tôi:

1) Tôi phải làm gì với Safari? Tôi có sử dụng một đối số dòng lệnh tương tự không?

2) Quan trọng hơn, tôi có thể một người nào đó xin vui lòng cho tôi biết liệu chức năng cross-domain được phép trong Chrome và Safari theo mặc định chừng nào server trả lời với tiêu đề hay tôi phải chắc chắn rằng

a) máy chủ phản hồi với tiêu đề

b) trình duyệt được bắt đầu với đối số thích hợp.

+0

Có rất nhiều chi tiết để yêu cầu tên miền chéo hoạt động bình thường. Tất cả phụ thuộc vào loại yêu cầu bạn đang cố gắng thực hiện. Bạn có thể cung cấp thêm chi tiết về yêu cầu của mình không? Bạn có thể tìm hiểu thêm về cách thực hiện các yêu cầu CORS tại đây: http://www.html5rocks.com/en/tutorials/cors/ – monsur

Trả lời

4

Tôi đã tìm thấy sự cố. Đọc thêm về CORS đã giúp html5rocks.com/en/tutorials/cors. Tôi nhận ra rằng các yêu cầu của tôi đã kích hoạt các yêu cầu preflight (OPTIONS) và máy chủ không được thiết lập để xử lý các yêu cầu này đúng cách. Lý do nó gây ra các yêu cầu preflight là bởi vì tôi đã sử dụng JQuery và nó đã thêm một tiêu đề tùy chỉnh vào các yêu cầu của tôi. Tôi đã sửa đổi mã của mình để ngăn việc thêm phần đầu bổ sung này và yêu cầu của tôi không còn yêu cầu preflight nữa. Bây giờ tôi không phải vô hiệu hóa bảo mật web và nó hoạt động tốt.

+2

Bạn có thể nói chính xác cách bạn đã sửa đổi mã của mình không? Tiêu đề phụ là gì? Tôi có thể gặp vấn đề tương tự này. – T3db0t

+0

Kiểm tra liên kết tài liệu cors ở trên. Kiểm tra khi yêu cầu preflight là không cần thiết. Kiểm tra thông tin liên lạc http của bạn qua firefug hoặc một công cụ trình duyệt tương tự và kiểm tra tất cả phần tiêu đề của các yêu cầu http của bạn. – CEGRD

+2

Dường như không phải là tiêu đề tùy chỉnh (X- *) nhưng tiêu đề yêu cầu Loại nội dung: "Nếu bạn đặt giá trị này thành bất kỳ điều gì khác ngoài ứng dụng/x-www-form-urlencoded, multipart/form-data hoặc text/plain bạn sẽ kích hoạt yêu cầu preflight. " Tôi có thể nói rằng tất cả điều này có vẻ ngớ ngẩn - đâu là lý do cho sự điên rồ này? – Marc

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