par*_*ent 27 asp.net cors asp.net-web-api
在最新的beta 2版本中,我遇到了跨域POST请求命中Api控制器的问题.
Chrome(和其他浏览器)吐出:
OPTIONS http://api.hybridwebapp.com/api/values 400 (Bad Request)
POST http://api.hybridwebapp.com/api/values 404 (Not Found)
Run Code Online (Sandbox Code Playgroud)
它可能与此问题有关,但我已应用该解决方法和其他一些其他修补程序,例如web.config 添加
我一直在用这个敲打我的脑袋一段时间,所以我创建了一个解决方案来完全重现问题.
加载Web应用程序将有2个按钮,一个用于GET,一个用于POST,响应将出现在按钮旁边.GET有效.无法获得POST以成功返回.
我能够从Fiddler那里得到一个提示,但这没有任何意义,因为如果你看一下它的反应就包含了Access-Controll-Allow-Origin标题中的域:
解决方案中有一个名为"ConfigurationScreenshots"的文件夹,其中包含IIS配置(网站绑定)和项目属性配置的一些屏幕截图,以便尽可能轻松地帮助我:)
编辑:不要忘记将此条目添加到主机文件(%SystemRoot%\ system32\drivers\etc):
127.0.0.1 hybridwebapp.com api.hybridwebapp.com
Run Code Online (Sandbox Code Playgroud)
**状态:**似乎Chrome之类的某些浏览器允许我继续POST,无论OPTIONS响应中的错误消息如何(而其他像Firefox则没有).但我不认为这解决了.
查看它有的OPTIONS请求的Fidler截图
Access-Control-Allow-Origin:http://hybridwebapp.com
然而错误:
原产地http://hybridwebapp.com是不允许的
这完全是矛盾的,好像它忽略了标题.
par*_*ent 23
好的,我已经过了这个.这一直是我遇到过的最奇怪的问题.以下是如何"解决"它:
删除这个:
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
<add name="Access-Control-Allow-Origin" value="http://mydomain.com" />
<add name="Access-Control-Allow-Headers" value="Accept, Content-Type, Origin" />
<add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
Run Code Online (Sandbox Code Playgroud)
因为你已经有了这个:
var enableCorsAttribute = new EnableCorsAttribute("http://mydomain.com",
"Origin, Content-Type, Accept",
"GET, PUT, POST, DELETE, OPTIONS");
config.EnableCors(enableCorsAttribute);
Run Code Online (Sandbox Code Playgroud)
道德:你只需要一个.
Gre*_*olf 12
如果您使用OAuth授权.请求不要直接访问web api.您需要为该端点启用OWIN CORS支持.
我如何在我的网站上安装:安装owin cors
Install-Package Microsoft.Owin.Cors
Run Code Online (Sandbox Code Playgroud)
注意:请不要使用:Install-Package Microsoft.AspNet.WebApi.Cors
在文件Startup.Auth.cs中
//add this line
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
// Enable the application to use bearer tokens to authenticate users
app.UseOAuthBearerTokens(OAuthOptions);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
49054 次 |
最近记录: |