我有以下代码。
WCF REST方法
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "Account")]
[OperationContract]
string GetUniqueLoginId();
客户端呼叫
$.ajax({
type: "GET",
url: serviceURL + 'Account',
contentType: 'application/json; charset=utf-8',
dataType: "json",
success: app.onGetUniqueId,
error: app.onAjaxError
});
当我使用IE(11)时,它通过返回唯一ID完美地工作。但是当我使用chrome时,它会给我以下错误。
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:5553' is therefore not allowed access.
如何解决问题?任何帮助将不胜感激。
答案 0 :(得分:1)
这意味着您请求的WCF服务与调用它的应用程序的来源不同,因此受"Same Origin policy"限制。您必须使用JSONP(服务必须支持jsonp)或CORS(服务器端应该添加允许您的源的CORS头)
答案 1 :(得分:1)
您需要在Web配置文件中添加以下配置,在IIS或IIS Express上托管的服务上启用CORS。
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
...
通过将其设置为*,我们允许来自任何来源的请求访问该服务。