2013-09-09 1 views
0

Я искал, много ответов здесь. Но я все испробовал, Он все еще не работает для меня. Я хочу получить json данные от web service (перекрестный домен).Происхождение null не разрешено Access-Control-Allow-Origin не работает с jsonp

var url1 = 'http://localhost:33219/iSes/Pro/RfsPro.svc/GetPro/'; 
$.getJSON(url1,function(json){ 
    alert('testing'); 
}); 

Я получил ошибку от Chrome консоли Origin null is not allowed by Access-Control-Allow-Origin.

Это то, что я пытался сделать, путем поиска ответов здесь:

  1. Помещенный /?callback=? к URL:

    var url1 = 'http://localhost:33219/iSes/Pro/RfsPro.svc/GetPro/?callback=?'; 
    
  2. я нашел chrome.exe --allow-file-access-from-files, но если мы будем использовать это, сделать клиентов что просмотр нашего сайта должен сделать это тоже?

  3. This answer, 3rd option связанные с CORS, используя PHP настроить заголовок, как я мог бы сделать это с ajax или jquery? Потому что мой проект использует backbone.js не PHP.

+0

Ах, все в порядке в моем коде. Просто опечатка здесь. – Nothing

+0

Используете ли вы тот же порт и тот же URL-адрес страницы происхождения? Для абсолютных URI начало координат - это triple {protocol, host, port}. http://en.wikipedia.org/wiki/Same-origin_policy – Idipaolo

+0

Служба должна отправить реальный JSONP, это означает, что JSON завернут в вызываемую функцию, просто вызов $ .getJSON не делает его JSONP, а обычный JSON не является поддерживаемый кросс-домен, если CORS не включен, и в этом случае почти все будет работать. Лучше всего использовать $ .ajax и установить dataType в JSONP и убедиться, что ваша служба возвращает действительные данные JSONP. – adeneo

ответ

1

Хотя исходный url и адрес назначения не совпадают, вы всегда будете иметь эту ошибку!

Вы не можете сделать запрос ajax от "file:///E:/Project/WebSite/SourceWebsite/test.html", до "http://yourdomain:33219/iSes/Pro/RfsPro.svc/GetPro/", так как это является нарушением той же политики происхождения.

http://en.wikipedia.org/wiki/Same-origin_policy

Вы можете сделать Ajax запрос на сервер, если и только если протокол, URL и порт одинаковы.

Если вы хотите получить доступ к: "http://yourdomain:33219/iSes/Pro/RfsPro.svc/GetPro/"

Вы должны быть "http://yourdomain:33219/something"

Я надеюсь, что я ясно.

+0

Невозможно также с ajax в HTML5? – Nothing

+0

Да это возможно во многих отношениях. Https: //developer.mozilla.org/en-US/docs/Web/API/window.postMessage. Здесь это четкий способ сделать запрос кросс-домена с javascript и html5. – Idipaolo

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