Доступ к веб-сервису из файла: /// с Edge завершается неудачно - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь получить доступ к веб-сервису, который я написал на C #.Я получаю к нему доступ через Typescript и fetch-api.Доступ работает безупречно в Chrome и Firefox, но в Edge - нет.Я пробовал это с POST и GET, и оба терпят неудачу в Edge.

Typescript / js / html запускается локально с диска!Таким образом, поле адреса моего браузера выглядит примерно так: file: /// C: /Users/.../WebServiceConsumer/view/index.html

Typescriptметод доступа к веб-сервису выглядит следующим образом

getData(url:string, token?:string): Promise<any>{

    let headers:Headers = new Headers({"Content-Type": "application/json"});
    if (token) {
        headers.set("Authorization", 'Bearer '+ token);
    }

    return fetch(url, {
        method: "GET", // *GET, POST, PUT, DELETE, etc.
        mode: "cors", // no-cors, cors, *same-origin
        cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached
        credentials: "same-origin", // include, *same-origin, omit
        headers: headers,
        redirect: "follow", // manual, *follow, error
        referrer: "no-referrer", // no-referrer, *client
    })
    .then(response => response.json()
    .then(json => {return json}))
    .catch(error => console.log('error:', error));; // parses response to JSON
}

метод, к которому я пытаюсь получить доступ, выглядит следующим образом

public class SearchController : ApiController
{
    [HttpGet]
    [Route("api/v1/Search/Test")]
    public IHttpActionResult Get()
    {
        return Ok("OK");
    }
}

Я установил политику CORS в своем коде C # через

res.Headers.Set("Access-Control-Allow-Origin", "*");

Ошибка, которую я получаю и записываю на консоль, выглядит следующим образом enter image description here

Я понятия не имею, как решить эту проблему.Что делает Edge, чего не делает Chrome?Как я могу получить доступ к своему веб-сервису из Edge?

FYI

  1. Веб-сервис - это отдельное приложение на C # с Owin
  2. Access from "file: /// ... "является обязательным для этого проекта

1 Ответ

0 голосов
/ 05 декабря 2018

Возможно, URL-адреса localhost и file:/// классифицируются в двух разных зонах безопасности.Например, если один из них подключен к Интернету, а другой к внутренней сети, запрос перекрестного источника будет заблокирован.

Другая возможность с этими зонами безопасности в Edge заключается в том, что если ваша страница классифицируется в зоне, она получает другуюприменена политика безопасности, которая может быть более или менее ограничительной.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...