如何使用Aurelia-http-client post方法使用CORS

本文关键字:CORS 方法 post 何使用 Aurelia-http-client | 更新日期: 2023-09-27 18:05:31

我正在使用Aurelia/Typescript,我有一个Aurelia -http-client的实例,它可以到达我的WCF服务并进行调用。我的GET方法工作得很好,但是当我尝试POST时,我得到"preflight 405"错误,告诉我该方法是不可接受的。我已经尝试在我的WCF和所有添加各种标签,但没有任何工作。

有点奇怪,如果我使用aurelia-fetch-client,取回工作得很好(POST &得到)。我不知道如何绕过这个问题,但我真的需要找到答案。请帮助!

这是我的服务类的一个片段:

this.Client = new HttpClient()
            .configure(x => {
                x.withBaseUrl("http://localhost/myService.svc")
            });
this.Client.post("GetData/" + id,
            {
                name: "name"
            })
            .then(resp => {
                console.log(resp );
            })
            .catch(error => {
                // Throw error
            });
这是我的webInvoke方法在我的WCF服务:
[OperationContract]
        [WebInvoke(Method = "POST", UriTemplate = "/GetData/{id}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
        Person Person(string name, string ticket);

如何使用Aurelia-http-client post方法使用CORS

我做了一个类似的练习,我发现我的大多数问题都是在配置服务方面。

我确实需要添加一个Accept标头到http客户端:

    let client = new HttpClient()
        .configure(x => {
            x.withBaseUrl('http://localhost:50577/api');
            x.withHeader('Accept', 'application/json');
        });

在服务器端,我不能完全让它工作,直到我实现了一个CORS处理程序来拦截和显式管理的东西。我遵循了MSDN博客上的一个例子,并实现了类似于ASP的东西。Net Core中间件

这个例子是针对ASP的。Net Web Api,但思想应该是相同的:https://code.msdn.microsoft.com/Implementing-CORS-support-a677ab5d内容

链接中的代码还没有真正为生产做好准备,主要是因为它没有很好地验证源代码,但我认为这个概念是合理的。