Вызов API не выполняется с веб-страницы, но успешно выполняется на тестовых страницах - PullRequest
0 голосов
/ 09 января 2020

Я создал API, заполненный из файла swagger. json и убедился, что он работает в тестовом интерфейсе. Тестовый запрос пользовательского интерфейса успешно показывает заголовки, переданные ниже.

POST https://apiforqubo.azure-api.net/api/Qubo HTTP/1.1
Host: apiforqubo.azure-api.net
Content-Type: application/json
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••
Ocp-Apim-Trace: true

Я добавил политику CORS для всех операций. Теперь это обновлено, чтобы отразить ответ ниже.

Обновленная политика:

<policies>
    <inbound>
        <base />
        <cors allow-credentials="true">
            <allowed-origins>
                <origin>https://apiforqubo.developer.azure-api.net</origin>
            </allowed-origins>
            <allowed-methods>
                <method>POST</method>
                <method>GET</method>
                <method>PUT</method>
            </allowed-methods>
        </cors>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

Когда я пытаюсь выполнить API с веб-страницы, сгенерированной для API по адресу: https://apiforqubo.developer.azure-api.net/api-detail, запрос не выполняется с ошибкой:

Unable to complete the request

Since the browser initiates the request, it requires Cross-Origin Resource Sharing (CORS) enabled on the server.

Чего мне не хватает?

ОБНОВЛЕНИЕ: заявление о политике, отражающее конкретный c веб-сайт в соответствии с предложением Виталия Курохтин в комментариях.

С уважением, Радже sh

Ответы [ 2 ]

0 голосов
/ 13 января 2020

Пожалуйста, добавьте элемент политики разрешенных заголовков в свою политику в APIM

0 голосов
/ 10 января 2020

Вы настроили его так, чтобы запросы CORS разрешались только с https://azure-api.net, а не с https://apiforqubo.developer.azure-api.net. Используйте полный URL-адрес или подстановочный знак:

<origin>https://*.azure-api.net/</origin>
...