Chrome показывает Access Control Allow Origin ошибка

0

Я использую 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'); }
        });

Странно, что после запроса появляется "успех", и сервер действительно получает данные, но затем появляется сообщение об ошибке в консоли. Есть ли способ избежать этого сообщения?

Теги:
google-chrome

3 ответа

3
Лучший ответ

Спасибо за все ваши ответы выше, но я думаю, что нашел путь, прежде чем решить эту проблему. Я пытался использовать два способа: установить Access-Control-Allow-Origin в ASP.Net MVC - простейший возможный метод с 87 голосами и 32 голоса, я нашел ответы в двух разных местах, и оба применили их, но это не сработало. В начале этой недели я попытался удалить код в web.config и просто оставил код на С#, он работает! Не могу поверить, что эти два решения имеют проблемы.

В любом случае, надеюсь, что это может помочь другим.

  • 0
    Я исправил эту же ошибку в NGINX также с помощью этого решения, в моем случае: location ~ * \. (Json) $ {more_set_headers "Access-Control-Allow-Origin: $ http_origin"; }
0

"Не разрешено 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
0

если ситуация

  • ваш скрипт размещен на другом сервере

  • или субдомен

  • или попробуйте нажать 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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню