【问题标题】:consume web service through url in other domain in json通过 json 中其他域中的 url 使用 web 服务
【发布时间】:2013-11-19 04:40:30
【问题描述】:

我在我们的服务器中创建了一个 wcf 服务,当我在我的 html 页面中使用此 Web 方法时,它托管在 IIS 中,该页面位于同一服务器中的相同解决方案或不同解决方案中(例如:服务 url://www.xyz .com/projectname/service.svc/methodname
和域 url://www.xyz.com/projectname) 当我在 ajax jquery 中使用 type='post' 和 datatype="J son" 调用此 url 时,我成功地从我的 web 方法中获得响应。但问题是当我在不同的服务器中使用不同的域名(域url: //www.abc.com/projectname 和服务 url //www.xyz.com/projectname/service.svc/methodname ) 我无法调用 Web 服务,或者我不知道它是否在调用 Web 方法并且它正在显示错误消息,任何人都可以帮我解决任何问题

【问题讨论】:

  • 浏览器强制执行所谓的Same Origin Policy,它会阻止您进行跨域 AJAX 调用。

标签: asp.net-mvc-3


【解决方案1】:

进行跨域 AJAX 调用有两种可能性:

  • JSONP(仅适用于 GET 请求,如果您使用 jquery 并且仅适用于 JSON 响应有效负载) - 您的服务应该支持 JSONP 响应而不是简单的 JSON。基本上这意味着它应该将标准 JSON 包装在一个应该作为参数传递的回调函数中。您可以在这里查看如何在 WCF 服务中本地启用 JSONP 支持:How to natively enable JSONP for existing WCF service?
  • CORS(适用于所有 HTTP 动词)- 您的 Web 服务必须返回正确的 Access-Control-Allow-* 响应标头。下面是一个示例,说明如何在 WCF 中创建自定义消息检查器以附加这些标头:http://enable-cors.org/server_wcf.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2012-09-09
    • 2013-07-09
    • 1970-01-01
    • 2013-03-20
    • 2012-11-04
    • 1970-01-01
    相关资源
    最近更新 更多