2016-11-04 3 views
0

애저 API 관리의 최상위 범위에서 다음 CORS 정책을 제공 :푸른 API 관리 - CORS 문제

<policies> 
     <inbound> 
      <cors> 
       <allowed-origins> 
        <origin>*</origin> 
       </allowed-origins> 
       <allowed-methods> 
        <method>*</method> 
       </allowed-methods> 
       <allowed-headers> 
        <header>*</header> 
       </allowed-headers> 
       <expose-headers> 
        <header>*</header> 
       </expose-headers> 
      </cors> 
     </inbound> 
     <backend> 
      <forward-request /> 
     </backend> 
     <outbound /> 
    </policies> 

사용 :

var xhr = new XMLHttpRequest(); 
    xhr.open('GET', 'https://mydomain.azure-api.net/calc/add?a=5&b=5');     
    xhr.send(); 

원시 요청 :

GET https://mydomain.azure-api.net/calc/add?a=5&b=5 HTTP/1.1 
    Host: mydomain.azure-api.net 
    Connection: keep-alive 
    Origin: https://any.com 
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36 
    Accept: */* 
    Referer: https://any.com/ 
    Accept-Encoding: gzip, deflate, sdch, br 
    Accept-Language: en-US,en;q=0.8,de;q=0.6,pl;q=0.4 

오류 메시지가 표시됩니다.

XMLHttpRequest cannot load https://mydomain.azure-api.net/calc/add?a=5&b=5. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://any.com' is therefore not allowed access. The response had HTTP status code 401. 

원시 응답 : 나는 성공 메시지를 수신하고

GET https://mydomain.azure-api.net/calc/add?a=5&b=5 HTTP/1.1 
    Host: mydomain.azure-api.net 
    Connection: keep-alive 
    Origin: https://any.com 
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36 
    Ocp-Apim-Subscription-Key: ********************** 
    Accept: */* 
    Referer: https://any.com/ 
    Accept-Encoding: gzip, deflate, sdch, br 
    Accept-Language: en-US,en;q=0.8,de;q=0.6,pl;q=0.4 

:

var xhr = new XMLHttpRequest(); 
    xhr.open('GET', 'https://mydomain.azure-api.net/calc/add?a=5&b=5');  
    xhr.setRequestHeader('Ocp-Apim-Subscription-Key', '**********************'); 
    xhr.send(); 

원시 요청 : 최대한 빨리 올바른 API 키를 사용할 때

HTTP/1.1 401 Access Denied 
    Content-Length: 152 
    Content-Type: application/json 
    WWW-Authenticate: AzureApiManagementKey realm="https://mydomain.azure-api.net/calc",name="Ocp-Apim-Subscription-Key",type="header" 
    Date: Fri, 04 Nov 2016 09:31:15 GMT 

    { "statusCode": 401, "message": "Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." } 

.

원시 응답 :

HTTP/1.1 200 OK 
    Cache-Control: no-cache 
    Pragma: no-cache 
    Content-Length: 123 
    Content-Type: application/xml; charset=utf-8 
    Expires: -1 
    X-AspNet-Version: 4.0.30319 
    X-Powered-By: ASP.NET 
    Access-Control-Allow-Origin: * 
    Access-Control-Expose-Headers: Content-Length,Date,Server,X-AspNet-Version,X-Powered-By 
    Date: Fri, 04 Nov 2016 09:34:44 GMT 

    <result><value>10</value><broughtToYouBy>Azure API Management - http://azure.microsoft.com/apim/ </broughtToYouBy></result> 

질문 :

그것은 잘못된/더 API 키가 푸른 API 관리에서이 예상되는 동작이며, 제공되지 않는 경우에만 발생 CORS 문제처럼 나에게 보이나요?

답변

0

간단히 말해서 올바른 오류 메시지가 표시되지 않지만 API 관리 솔루션은 일반 API처럼 가입 ID와 키를 기반으로하므로 사용자가 아닌 경우 작동하지 않을 것이라고 기대합니다. 필요한 정보를 전달합니다.

+0

API 키가 없어도 작동하지 않을 것으로 기대하고 있지만 API 키를 사용하지 않고 쿼리하는 동안 브라우저 콘솔에 CORS 메시지가 표시되지 않습니다 (IE, Firefox, Chrome 및 기타 여러 제품에서 발생). .. –