2015-11-02 1 views
0

я не знаю, почему мой Аякс CO не работает ..Как разрешить совместное использование ресурсов на основе перекрестных источников?

Аякса

$(document).ready(function(){ 
     var xhr = new XMLHttpRequest(); 
     $.ajax({ 
      url: "SERVER_URL_AND_PARAMETERS", 
      type:"POST", 
      beforeSend:function(xhr){ 
       xhr.setRequestHeader("Access-Control-Allow-Origin", "*"); 
       xhr.setRequestHeader("Access-Control-Allow-Methods", "GET, POST"); 
      }, 
      dataType:"json", 
      crossDomain: true, 
      success:function(data, textStatus, xhr){ 
       alert(data); 
      }, 
      error:function(xhr,status,error){ 
       alert("code:"+xhr.textStatus+"\n"+"message:"+error.responseText+"\n"+"error:"+error.log); 

      } 

     }); 

    }); 

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

Allow:GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS 
    Cache-Control:no-cache="set-cookie, set-cookie2" 
    Connection:Keep-Alive 
    Content-Language:ko-KR 
    Content-Length:0 
    Content-Type:text/plain 
    Date:Mon, 02 Nov 2015 07:19:54 GMT 
    Expires:Thu, 01 Dec 1994 16:00:00 GMT 
    Keep-Alive:timeout=10, max=100 
    Set-Cookie:SOME_COOKIES; Expires=Tue, 01-Nov-16 07:19:53 GMT; Path=/ 
    X-UA-Compatible:IE=EmulateIE8, requiresActiveX=true 

заголовки запрос

Accept:*/* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8 
Access-Control-Request-Headers:accept, access-control-allow-headers, access-control-allow-methods, access-control-allow-origin 
Access-Control-Request-Method:POST 
Connection:keep-alive 
Host:SERVER_URL 
Origin:http://CLIENT_URL 
Referer:http://CLIENT_URL/AND/JSP_FILE_PATH.jsp?lineCd=CODE1&prdtCode=CODE2 
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36 

хром ошибка подробно

MLHttpRequest cannot load SERVER_URL_AND_PARAMETER Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'CLIENT_URL' is therefore not allowed access. 

Я не знаю, в чем проблема с моим кодом. Я работаю над веб-приложением CLIENT_URL.

ответ

0

Заголовки CORS, такие как "Access-Control-Allow-Origin" ДОЛЖНЫ быть установлены сервером, а не клиентом. Это сервер, который предоставляет CORS доступ к клиентам, а не наоборот. Вы не можете предоставить себе доступ CORS из браузера.

От MDN section on CORS, вот описательный цитата:

Поперечное Origin совместного использования ресурсов стандартных работ путем добавления нового HTTP заголовки, которые позволяют серверам описать множество происхождения, которые разрешено прочитать эту информацию используя веб-браузер. Кроме того, для методов запросов HTTP, которые могут вызывать побочные эффекты для пользовательских данных (в частности, для HTTP-методов, отличных от GET, или для использования POST с некоторыми типами MIME), спецификация требует, чтобы браузеры «предваряли» запрос , запрашивая поддерживаемые методы с сервера с помощью метода запросов HTTP OPTIONS, а затем после «утверждения» от сервера, отправляющего фактический запрос с помощью HTTP-запроса . Серверы также могут уведомлять клиентов о том, должны ли отправляться «учетные данные» (включая файлы cookie и данные HTTP-аутентификации).

В частности, обратите внимание на часть, в которой говорится: «Разрешить серверам описывать набор истоков, которым разрешено читать эту информацию с помощью веб-браузера».

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