2015-03-17 3 views
0

Я пытаюсь сделать запрос к API. Он отлично работает в почтальоне, но не из браузера напрямую. Я не могу найти разницы между 2, кроме https://developer.chrome.com/extensions/xhr. Но я не понимаю, почему это было проблемой, потому что для Access-Control-Allow-Origin установлено значение *.Ошибка Access-Control-Allow-Origin, но сервер установлен на *

Почтальон Просмотр:

GET /facebook/v1/api/v2.2/123585981029762/insights/page_impressions?period=day HTTP/1.1 
Host: api.url.com 
Authorization: Basic {BASIC AUTH HASH} 
X-KO-ACCOUNT: 123585981029762 
Cache-Control: no-cache 

Почтальон Response Headers:

Access-Control-Allow-Origin → * 
Cache-Control → private, no-cache, no-store, must-revalidate 
Connection → keep-alive 
Content-Length → 1000 
Content-Type → application/json; charset=UTF-8 
Date → Tue, 17 Mar 2015 21:51:17 GMT 
ETag → "32a4e4fc7aeb25536a634c302505fb02e7efe9fb" 
Expires → Sat, 01 Jan 2000 00:00:00 GMT 
Facebook-API-Version → v2.2 
Pragma → no-cache 
X-FB-Debug → Y0OdHMjYO5KUIqcnnVNK4eWLZRiPSKUnsOAHZ3sf33qjVSanI2AoK/jpY9OhZUffGfX31Wo6IgUWMoXkZHZRKQ== 
X-FB-Rev → 1645171 

Javascript из браузера:

xmlhttp= new XMLHttpRequest(); xmlhttp.open("GET","https://api.url.com/facebook/v1/api/v2.2/123585981029762/insights/page_impressions?period=day",true); 
xmlhttp.setRequestHeader("authorization",'Basic {BASIC AUTH HASH}'); 
xmlhttp.setRequestHeader("X-KO-ACCOUNT",'12358376954762'); 
xmlhttp.send(); 

Сообщение об ошибке (в Chrome):

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 401. 

Кроме того, Chrome показывает метод OPTIONS вместо GET. (Я знаю, что это нормально с ошибкой кросс-браузера). Но IP-адрес удаленного адреса отличается.

ЛЮБАЯ помощь была бы принята с благодарностью!

ответ

1

Хром очень серьезно относится к этому вопросу, и даже при установке заголовков на «*» он не позволит вам выполнять кросс-доменный запрос.

Что вы можете сделать для режима разработки, это добавить «отключить-web-безопасность» в вашем хромовом ярлыке (после пути, щелкнув правой кнопкой мыши -> свойства). Затем закройте все экземпляры Chrome в диспетчере задач и дважды щелкните ярлык. Вы получите предупреждение о том, что вы запустили свой браузер в этом режиме, но затем он должен работать для локального тестирования.

+0

Спасибо, я сделаю снимок. Очевидно, что домены постоянно разговаривают с другими доменами, поэтому как мне разрешить доступ к Access-control-allow-origin? –

+0

Некоторые API включают белый список URI, который позволяет запрашивать именно эти домены. В зависимости от ситуации вы также можете проверить «jsonp», внедрить другой сайт или использовать релаксацию домена. Однако вы можете проверить, можете ли вы разместить бэкэнд на одном и том же происхождении. –

 Смежные вопросы

  • Нет связанных вопросов^_^