我有一组启用了 WebInvoke 的 WCF 服务。
我想要访问它们的一种方法是通过 IIS 托管的简单网页上的 javascript。
为了让它发挥作用,我必须启用 CORS,我使用本指南进行了管理:
http://blogs.microsoft.co.il/idof/2011/07/02/cross-origin-resource-sharing-cors-and-wcf/
但是,当我从另一台计算机通过本地网络访问网页时,仍然存在问题。
举个例子:
网络上的两台计算机 Comp1 (10.0.0.1) 和 Comp2 (10.0.0.2)。
IIS 和 WCF 服务都由 Comp1 承载。
使用 Firefox,我可以使用以下命令从 Comp1 访问网页:
http://10.0.0.1:12345
只要根据上面的链接启用了 CORS,这就会起作用。如果我禁用 CORS,我会收到一条错误消息,指出 CORS 已禁用。
如果我使用 Comp2 中的 Firefox 访问 10.0.0.1:12345,无论我是否在 WCF 服务器中启用了 CORS 代码,我都会收到相同的 CORS 错误消息。如果 CORS 被禁用,我在这里得到的错误消息与我在 Comp1 上得到的错误消息相同。
有没有人对可能出错的地方有任何建议?
一切(js 和 html 除外)都在 C# 中使用 Visual Studio 2013。
请告诉我是否应该包含一些代码以获得更好的帮助。
最佳答案
确保您在 IIS 中为 CORS 支持启用了自定义 header 。如果没有将以下设置添加到 web.config 的根目录
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
有关在 server side 和 client side 上启用 cors 的更多详细信息。
附言- 您还可以 checkout this 新的 WCF 休息行为扩展库,该库支持启用 CORS 的行为。
关于c# - 使用 CORS 通过 IIS 访问 WCF REST 服务在本地工作,但不能从连接的设备访问,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33156503/