servicestack Servicestack选项404和Cors原点,servicestack,cors,servicestack,Cors" /> servicestack Servicestack选项404和Cors原点,servicestack,cors,servicestack,Cors" />

servicestack Servicestack选项404和Cors原点

servicestack Servicestack选项404和Cors原点,servicestack,cors,servicestack,Cors,我正在做一个cors请求从我的 客户:http://mypcname.companyname 到servicestack 服务器:http://mypcname.companyname:83/customersInformation 这就是javascript superagent库的请求: superagent.get(requestUrl) .set('Authorization', "basictoken " + getToken()) .set('

我正在做一个cors请求从我的

客户:
http://mypcname.companyname

到servicestack

服务器:
http://mypcname.companyname:83/customersInformation

这就是javascript superagent库的请求:

superagent.get(requestUrl)
          .set('Authorization', "basictoken " + getToken())
          .set('Accept', 'application/json')
          .end(function (response) {


          });
这个get请求在Web API中完全可以正常工作!因此,在我看来,问题不可能是客户方

这是我的服务堆栈设置:

Plugins.Add(new CorsFeature(allowedOrigins: Settings.Default.SmartAllowedCorsOrigin, allowCredentials: true, allowedHeaders: "Content-Type, Authorization"));
RequestFilters.Add((httpReq, httpRes, requestDto) =>
{
    if (httpReq.HttpMethod == "OPTIONS")
    {
        httpRes.End();
    }

});
这就是我使用CustomerInformation数据设置类的方式:

[Route(RouteTemplate,"GET, OPTIONS",...)]
由于我使用了上面的选项请求过滤器,选项404错误消失了,但现在我遇到了更糟糕的情况…:

OPTIONS http://mypcname.companyname:83/customersInformation Origin http://mypcname.companyname is not allowed by Access-Control-Allow-Origin.
我必须在服务器端做什么才能使cors最终工作

更新

作为mythz问题的答案,获取响应头数据:

这是我使用cors插件上的默认值从服务器获得的响应原始数据:(fiddler原始选项卡)

google chrome中的错误:

OPTIONS http://mypcname.companyname:83/customersInformation Origin http://mypcname.companyname is not allowed by Access-Control-Allow-Origin.
应该在选项之后调用的Get方法(至少我是这么认为的)可能由于cors-origion错误,甚至之前发生的选项都不被允许,所以从未被命中

更新2

对服务器的请求:

OPTIONS http://mypcname.companyname:83/customersInformation HTTP/1.1
Host: mypcname.companyname:83
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
Access-Control-Request-Method: GET
Origin: http://mypcname.companyname
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
Access-Control-Request-Headers: accept, authorization, x-requested-with
Accept: */*
Referer: http://mypcname.companyname/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4

当您保留默认的
allowedOrigins::
时,它是否工作?不,我得到了完全相同的错误。什么错误,404?如果是这种情况,则没有匹配的
[Route]
允许
选项
请求。使其自动处理所有选项请求,包括不匹配的路由或不存在的路由。顺便说一下,您打算使用
httpRes.EndRequest()
而不是
httpRes.End()
。不不,不,我没有得到404,在我使用请求筛选器后,其中一个路由消失了。我从上面得到了最后一个错误:访问控制Allow Origin不允许选项Origin。
OPTIONS http://mypcname.companyname:83/customersInformation HTTP/1.1
Host: mypcname.companyname:83
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
Access-Control-Request-Method: GET
Origin: http://mypcname.companyname
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
Access-Control-Request-Headers: accept, authorization, x-requested-with
Accept: */*
Referer: http://mypcname.companyname/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4