2

我有一个托管在 IIS 中的 WCF Web 服务。它使用 webHttpBinding。方法上有 WebInvoke 属性,因此它们可以访问 REST 样式。我可以像这样成功地使用它们:http: //mydomain.com/MyService.svc/some/rest/style/thing 并 POST 到 Web 服务的参数。

现在我想通过非标准端口 7777 将其更改为 HTTPS。我正确配置了 IIS,获得了证书和一切。我可以通过https://mydomain.com:7777访问 html 页面。我添加了一个修改过的 webhttpbinding 来添加一个安全节点,如下所示:

<security mode="Transport">
    <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
</security>

我还更改了我的行为的 servicemetadata 节点并删除了 httpGetEnabled='true' 并添加了 httpsGetEnabled='true'

我可以访问https://mydomain.com:7777/MyService.svc并获取信息屏幕。

我可以使用 http get 访问https://mydomain.com:7777/MyService.svc/some/rest/style/thing并收到“方法不允许”消息。

但是如果我尝试使用 POST 访问https://mydomain.com:7777/MyService.svc/some/rest/style/thing我会收到 403 禁止


更新更多信息

我正在缩小问题范围

我正在使用 jQuery 并通过 $.post(" http://mydomain.com/ .....". "data", callback, "json").. 访问 web 服务。 post(" https://mydomain.com:7777/ .....". "data", callback, "json")..这给了我一个 403 ......使用我看到的萤火虫而不是发送一个 POST ,它最初是发送选项..这就是给 403

这可能是一个 jquery 问题

4

5 回答 5

1

JQuery $.ajax、$.get、$.post 调用不允许跨域调用。当你做一个时,它发送 OPTIONS 动词而不是 POST 动词,尽管请求方法是 POST。

其他解决方法可能是创建另一个指向您要实际调用的 URL 的 IP 地址的子域。

于 2009-10-25T17:11:49.690 回答
0

如果您使用 MOZILLA fire fox 作为浏览器,那么它会预检请求并使用 OPTIONS 动词发送请求,当服务器返回 200 OK 状态时,它会使用 POST 动词请求实际数据。

跨域问题。

英特哈布

于 2010-11-17T15:30:10.820 回答
0

您需要运行httpcfg以让 IIS 侦听非标准端口上的 SSL 流量。

于 2009-09-25T18:52:04.293 回答
0

布匹:

请检查以确保您附加了“回调=?” 请求 URI 的参数。然后,您应该会在请求标头中看到 GET 动词。

从 jQuery 文档页面

回调采用“example.com?callback=?”的形式。jQuery 自动替换 '?' 具有不与全局范围冲突的随机方法名称。您不必自己指定方法名称。

希望这可以帮助,

迈克尔·伊巴拉

于 2010-01-06T21:33:10.383 回答
0

我发现我遇到了同样的问题,即使用 jQuery 的 .load 函数调用 Ajax 时返回 403 错误。我必须进入 IIS 管理器的默认网站属性上的主目录并选择配置,然后编辑 .cgi 扩展名的属性,使其包含 OPTION 动词。找到您的问题和随后的评论帮助我快速解决了这个问题。

于 2011-10-31T16:08:31.170 回答