安装了我的电脑并安装了所有服务包和补丁。
但我无法让我的Angular网站与WebApi进行沟通。当我尝试验证用户名和密码时,我不断收到以下消息。
阻止跨源请求:同源策略禁止在http://myLocaldeployedSite:89/api/Account/GetUserByPost/
读取远程资源。这可以通过将资源移动到同一域或启用CORS来解决。
http://myLocaldeployedSite:89/
是部署到IIS中的WebApi。
我的代码中有以下代码更改(根据brockallen blog http://brockallen.com/2012/10/18/cors-iis-and-webdav/):
WebApi(web.config):
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
我正在制作的电话的标题看起来像这样......
Host: localhost:89
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: `http://localhost:2825`
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
fiddler中的响应是200 - OK但是在Firebug中它会显示上面提到的消息。
这里也是消息的图像:
以下是我在Fire Bug中发现的回复:
但我仍然没有让网站连接到我的WebApi。
请有人帮忙。 已经在StackOverflow中引用了相当多的链接但尚未成功,所以我希望有人可以提供协助。
谢谢。
答案 0 :(得分:0)
在WebAPI中尝试此操作:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// do stuff
var cors = new EnableCorsAttribute("*", "*", "*") {SupportsCredentials = true};
config.EnableCors(cors);
}
}
答案 1 :(得分:0)
好的,我设法解决了。因为我在格式化PC之前每次都复制了文件夹,所以我在文件中保持了相同的Web.Config设置。
感谢Stack Overflow和Batterang(Chrome)上的link,我设法解决了这个问题。我从web.config中删除了以下行,所有内容都已解决。
<!--<add name="Access-Control-Allow-Origin" value="*" />-->
感谢所有的帮助和建议。