【发布时间】: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 访问我的网络服务?
仅供参考
- Web 服务是带有 Owin 的 C# 独立应用程序
- 从“file:///...”访问是这个项目的必备条件
【问题讨论】:
-
您在Edge console 中看到了什么吗?
-
错误:TypeError: Fehler bei "fetch"
-
特别是检查您的飞行前 OPTIONS 请求以及任何后续请求。我想知道当您使用
file:///URL 时,CORS 是否在 EDGE 中失败。 (即查看工具的 NETWORK 选项卡,而不仅仅是控制台。)
标签: c# typescript fetch-api