Я использую jquery для отправки данных на сервер, сервер получил данные, но хром все еще показывает ошибку:
XMLHttpRequest cannot load 'myServer:63373/api/sendData'. Origin 'myServer:63385' is not allowed by Access-Control-Allow-Origin.
Вот мой код js:
$.ajax({
type: 'POST',
url: 'myServer:63373/api/SendData',
crossdomain: true,
async: true,
data: myData,
dataType: 'json',
success: function(){ alert('success'); }
});
Странно, что после запроса появляется "успех", и сервер действительно получает данные, но затем появляется сообщение об ошибке в консоли. Есть ли способ избежать этого сообщения?
Спасибо за все ваши ответы выше, но я думаю, что нашел путь, прежде чем решить эту проблему. Я пытался использовать два способа: установить Access-Control-Allow-Origin в ASP.Net MVC - простейший возможный метод с 87 голосами и 32 голоса, я нашел ответы в двух разных местах, и оба применили их, но это не сработало. В начале этой недели я попытался удалить код в web.config и просто оставил код на С#, он работает! Не могу поверить, что эти два решения имеют проблемы.
В любом случае, надеюсь, что это может помочь другим.
"Не разрешено Access-Control-Allow-Origin". Проще говоря, вы обычно не можете назначить вызов XHR другому домену/порту/протоколу с сайта веб-страницы, в которую был включен ваш javascript.
Современные браузеры позволяют обойти это с разрешения администратора сервера.
Вы делаете свой запрос Ajax с помощью API XHR2 (http://www.html5rocks.com/en/tutorials/cors/)
На стороне сервера вам необходимо выпустить следующие заголовки, чтобы разрешить доступ из домена, который обслуживал страницу, которая включала ваш javascript:
Access-Control-Allow-Origin: http://your-page-domain.com
Access-Control-Allow-Credentials: true
если ситуация
ваш скрипт размещен на другом сервере
или субдомен
или попробуйте нажать URL с другим портом
это кросс-domian запрос. jquery не может выполнять кросс-доменный запрос.
если это ваша проблема, тогда вы должны использовать jsonp для этого "jsonp", чтобы разрешить перекрестный запрос домена.
попробуйте сделать это с помощью jsonp.
для jsonp каждый вызов имеет обратный вызов означает, что будет значение в URL-адресе, и вы должны отправить respnse с этим обратным вызовом в php
означает попробовать: -
$.ajax({
type: 'POST',
url: 'myServer:63373/api/SendData',
crossdomain: true,
async: true,
data: myData,
dataType: 'jsonp',
success: function(){ alert('success'); }
});
и в php
wrap your response in $_GET['_callback']."(".$response.")"; and echo it
вы получите ответ в json.