12

Yêu cầu HTTP được hiển thị trước trông như thế nào nếu bạn bao gồm quyền xác thực cơ bản? Giống như cuộc trò chuyện sau đây? Im gặp khó khăn để hiểu được các tiêu đề cần phải được gửi ở đâu, cũng bởi vì nó không thể gỡ lỗi nó đúng với FirebugCORS và xác thực cơ bản HTTP

Chủ đầu tư:

OPTIONS /api/resource HTTP/1.1 
Access-Control-Request-Method: GET 
Origin: http://jsconsole.com 

Server:

HTTP/1.1 200 OK 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, GET, PUT, DELETE 
Access-Control-Allow-Headers: Authorization 
Access-Control-Max-Age: 1728000 
Access-Control-Allow-Credentials: true 

Chủ đầu tư:

GET /api/resource HTTP/1.1 
Access-Control-Request-Method: GET 
Access-Control-Allow-Credentials: true 
Origin: http://jsconsole.com 

Máy chủ:

HTTP/1.1 401 Unauthorized 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, GET, PUT, DELETE 
Access-Control-Allow-Headers: Authorization 
Access-Control-Max-Age: 1728000 
Access-Control-Allow-Credentials: true 
WWW-Authenticate: Basic realm="Authorisation Required" 

Chủ đầu tư:

GET /api/resource HTTP/1.1 
Access-Control-Allow-Credentials: true 
Authorization: Basic base64encodedUserAndPassword 
Access-Control-Request-Method: GET 
Origin: http://jsconsole.com 

Server:

HTTP/1.1 200 OK 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, GET, PUT, DELETE 
Access-Control-Allow-Headers: Authorization 
Access-Control-Max-Age: 1728000 
Access-Control-Allow-Credentials: true 
+0

Xem phần "CORS with auth cơ bản" một chút giữa bài viết tại http://avalanche123.com/blog/2011/10/10/cross-domain-javascript-lessons-learned/ –

+0

Thật không may là blog tuyết lở mục nhập đã lỗi thời. Chrome hoàn toàn hỗ trợ auth cơ bản. Tuy nhiên, IE không trừ khi bạn chơi xung quanh với các thiết lập bảo mật. – ianbeks

Trả lời

18

Nếu bạn đang yêu cầu thông tin thì máy chủ phải trả lời với nguồn gốc cụ thể trong Access-Control-Allow-Origin đáp ứng tiêu đề (và do đó không thể sử dụng ký tự đại diện *). Tất nhiên, nó cũng sẽ cần phải đáp ứng với tiêu đề phản hồi Access-Control-Allow-Credentials.

+1

Và Access-Control-Allow-Headers không thực sự được yêu cầu. FF/Chrome làm việc mà không có nó. Tuy nhiên, việc triển khai CORS của IE không hỗ trợ xác thực cơ bản, trừ khi bạn chơi xung quanh với các thiết lập bảo mật của nó (Bật các yêu cầu miền chéo) – ianbeks

+1

Yea, nó phụ thuộc vào cách bạn đang thực hiện xác thực cơ bản. Nếu bạn tạo thủ công tiêu đề ủy quyền thì bạn đã đúng, nhưng nếu bạn muốn trình duyệt cung cấp tiêu đề cho phép thì cần có thông tin đăng nhập cho phép. –