Origine http://localhost n'est pas autorisé par Access-Control-Allow-Origin
Je vais essayer d'appeler un service web à partir de ma machine locale. Mais la j'obtiens les erreurs suivantes dans une console Chromée:
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.
Mon test local, l'URL est:
http://localhost/welcome/html/index.html
Quand je télécharge mon code pour le domaine réel et d'appeler le service web à partir de là, il ne fonctionne bien sûr.
J'ai déjà essayé de modifier le contrôle d'accès des en-têtes, mais ce n'est pas pour aider.
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
OriginalL'auteur Flo | 2012-07-22
Vous devez vous connecter pour publier un commentaire.
La demande pour le service est défaillant en raison de navigateur même la politique de l'origine. Votre serveur local est à
http://localhost
pendant que vous essayez d'accéder à une ressource à http://www.test.com/. Ces sont les deux domaines différents. Donc ça ne marchera pas.La solution à ce problème est l'utilisation de la
Access-Control-Allow-Origin
etAccess-Control-Allow-Methods
, une partie de la De la SCRO spec. Vous avez inclus dans les en-têtes de réponse, mais qui ne fera pas bon parce que le navigateur va faire une pré-vol à la demande, avec des OPTIONS de verbes pour vérifier si l'appel est autorisé. Depuis que votre service n'est pas en mesure de gérer les OPTIONS verbe que vous voyez une 405 (Méthode Non Autorisée) erreur.Donc, si vous voulez votre service pour être accessible à partir d'un domaine différent, alors vous devrez modifier votre service WCF à l'appui de la SCRO. Je vous recommande ce lien: http://blogs.microsoft.co.il/blogs/idof/archive/2011/07/02/cross-origin-resource-sharing-cors-and-wcf.aspx. En utilisant ce que vous pouvez faire à votre service de soutien de la SCRO avec aucun changement dans votre code existant.
OriginalL'auteur Obaid