jquery - 为什么通过 ssl 托管在 iis 中的 wcf web 服务。结果是 "403 forbidden"? Jquery $.post 发送 OPTIONS 动词?

标签 jquery wcf iis ssl http-status-code-403

我有一个托管在 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并获取信息屏幕。

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

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


更新一些信息

我正在缩小问题范围

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

这可能是jquery的问题

最佳答案

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

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

关于jquery - 为什么通过 ssl 托管在 iis 中的 wcf web 服务。结果是 "403 forbidden"? Jquery $.post 发送 OPTIONS 动词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1478680/

相关文章:

javascript - jQuery 等同于 insertNode?

javascript - 用 jQuery 替换 HTML 后如何将光标放在文本末尾?

javascript - jQuery Mobile 1.4.2 - 带图标的单选按钮

javascript - 使用 jQuery 在悬停时预览图库中的相应图像

c# - 从 RESTful WCF 服务返回图像

c# - 在 Java 中使用 WCF .svc WebService

.net - WCF REST 服务客户端调用映射到错误的 Uris

asp.net - 即使在 IIS 的 web.config 中使用 <remove> 标记后也会出现重复部分错误

asp.net - 如何确定 ASP.NET 应用程序被回收的原因

.net - .net 框架配置提供程序 (machineConfig64) 的版本在源 (2.0) 和目标 (4.0) 上不同