【问题标题】:Accessing Webservice from file:/// with Edge fails使用 Edge 从 file:/// 访问 Web 服务失败
【发布时间】:2019-05-07 04:41:11
【问题描述】:

我尝试访问我用 C# 编写的 Web 服务。我通过 Typescript 和 fetch-api 访问它。 该访问在 Chrome 和 Firefox 中完美运行,但在 Edge 中却没有。我已经用 POST 和 GET 尝试过,但在 Edge 中都失败了。

Typescript/js/html 是从磁盘本地运行的! 所以我的浏览器地址字段看起来有点像这样: file:///C:/Users/.../WebServiceConsumer/view/index.html

访问webservice的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");
    }
}

我已经通过

在我的 C# 代码中设置了 CORS 策略
res.Headers.Set("Access-Control-Allow-Origin", "*");

我收到并登录到控制台的错误如下所示

我不知道如何解决这个问题。 Edge 做了哪些 Chrome 没有做的事情?如何从 Edge 访问我的网络服务?

仅供参考

  1. Web 服务是带有 Owin 的 C# 独立应用程序
  2. 从“file:///...”访问是这个项目的必备条件

【问题讨论】:

  • 您在Edge console 中看到了什么吗?
  • 错误:TypeError: Fehler bei "fetch"
  • 特别是检查您的飞行前 OPTIONS 请求以及任何后续请求。我想知道当您使用file:/// URL 时,CORS 是否在 EDGE 中失败。 (即查看工具的 NETWORK 选项卡,而不仅仅是控制台。)

标签: c# typescript fetch-api


【解决方案1】:

localhostfile:/// URL 可能被分类在两个不同的安全区域中。比如一个是internet,一个是intranet,跨域请求会被阻塞。

Edge 中这些安全区域的另一种可能性是,如果您的页面被分类在一个区域中,则会应用不同的安全策略,这可能或多或少具有限制性。

如果您在另一个浏览器中对它进行本地测试,则针对托管测试实例进行跨浏览器测试可能会更简单,因此它的行为就像现实世界一样。

【讨论】:

    猜你喜欢
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 2011-07-15
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多