12

Как будет выглядеть запрос перед запросом HTTP, если вы включите Basic auth? Как следующий разговор? Им удается понять, которые должны быть отправлены, где также потому, что его не представляется возможным, чтобы отладить его правильно с FirebugCORS и HTTP basic auth

клиента заголовки:

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

Сервер:

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 

Клиент:

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

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" 

Клиент:

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

сервер: заголовок ответа

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

См. Раздел «CORS with basic auth» немного посредине статьи на http://avalanche123.com/blog/2011/10/10/cross-domain-javascript-lessons-learned/ –

+0

К сожалению, лавинный блог запись устарела. Chrome полностью поддерживает базовые функции auth. Однако IE не работает, если вы не играете с настройками безопасности. – ianbeks

ответ

18

Если вы запрашиваете учетные данные, то сервер должен отвечать конкретным происхождения в Access-Control-Allow-Origin (и поэтому не может использовать подстановочный знак *). Конечно, тогда также потребуется ответить с заголовком ответа Access-Control-Allow-Credentials.

+1

И заголовки Access-Control-Allow-Headers на самом деле не требуются. FF/Chrome работает без него. Однако реализация IE в CORS не поддерживает базовую аутентификацию вообще, если вы не играете со своими настройками безопасности (разрешить запросы на междоменные запросы) – ianbeks

+1

Да, это зависит от того, как вы выполняете базовую аутентификацию. Если вы вручную создаете заголовок авторизации, тогда вы правы, но если вы хотите, чтобы браузер предоставил его, тогда необходимы учетные данные разрешения. –