Access-Control-Allow-Origin不允许使用origin http:// localhost

Flo*_*Flo 3 vb.net asp.net rest localhost

我正在尝试从本地计算机上调用Web服务.但是我在Chrome控制台中遇到以下错误:
http://www.test.com/service.svc/api/?cid=1 405 (Method Not Allowed) XMLHttpRequest cannot load http://www.test.com/service.svc/api/?cid=1.
Origin http://localhost is not allowed by Access-Control-Allow-Origin.

我的本地测试网址是: http://localhost/welcome/html/index.html

当我将代码上传到实际域并从那里调用web服务时,它确实可以正常工作.

我已经尝试更改访问控制标头,但这没有帮助.

Namespace RestService

Public Class service
    Implements Iservice

    Public Function GetProvinces(ByVal cid As String) As AjaxControlToolkit.CascadingDropDownNameValue() Implements Iweddingservice.GetProvinces
        WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Methods", "DELETE, POST, GET, OPTIONS")
        WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*")

        Dim MyConnection As SqlConnection = GetConnection()
        Dim cmd As New SqlCommand("SELECT provinceid,title FROM provinces WHERE CountryID=@CountryID ORDER BY title ASC", MyConnection)
        cmd.Parameters.Add(New SqlParameter("@CountryID", cid))
        Dim values As New List(Of CascadingDropDownNameValue)
        Try
            MyConnection.Open()
            Dim reader As SqlDataReader = cmd.ExecuteReader
            While reader.Read
                values.Add(New CascadingDropDownNameValue(reader("title").ToString, reader("provinceid").ToString))
            End While
        Catch ex As Exception

        Finally
            MyConnection.Close()
        End Try
        Return values.ToArray
    End Function

End Class


End Namespace       
Run Code Online (Sandbox Code Playgroud)

Oba*_*aid 10

由于浏览器的原始策略,对服务的请求失败.http://localhost当您尝试访问http://www.test.com/上的资源时,您的本地服务器处于运行状态.这些都在不同的领域.所以它不会起作用.

这个问题的解决方案是使用CORS规范的Access-Control-Allow-OriginAccess-Control-Allow-Methods部分.您已将这些内容包含在响应标头中,但这不会有任何好处,因为浏览器将使用OPTIONS动词发出飞行前请求以验证是否允许呼叫.由于您的服务无法处理OPTIONS动词,因此您会看到405(Method Not Allowed)错误.

因此,如果您希望从其他域访问您的服务,则必须修改您的WCF服务以支持CORS.我建议这个链接:http://blogs.microsoft.co.il/blogs/idof/archive/2011/07/02/cross-origin-resource-sharing-cors-and-wcf.aspx.通过使用此功能,您可以在不更改现有代码的情况下使您的服务支持CORS.