Access-Control-Allow-Origin en appel ajax de maillot de services web rest
J'ai utilisé du jersey de JAX-Rs en tant que service web pour une requête mysql.J'essaie de consommer le web-service via l'application mobile hybride .
Je me réfère à ce
http://coenraets.org/blog/2011/11/building-restful-services-with-java-using-jax-rs-and-jersey-sample-application/#comment-440541
À côté serveur le code suivant exécute dans tomcat server7 de requête sql
@Path("/employees")
public class EmployeeResource {
EmployeeDAO dao = new EmployeeDAO();
@GET
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public List<Employee> findAll() {
return dao.findAll();
}
}
public class EmployeeDAO {
public List<Employee> findAll() {
List<Employee> list = new ArrayList<Employee>();
Connection c = null;
String sql = "SELECT e.id, e.firstName, e.lastName, e.title FROM employee as e";
try {
c = ConnectionHelper.getConnection();
Statement s = c.createStatement();
ResultSet rs = s.executeQuery(sql);
while (rs.next()) {
list.add(processSummaryRow(rs));
}
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
ConnectionHelper.close(c);
}
return list;
}
protected Employee processSummaryRow(ResultSet rs) throws SQLException {
Employee employee = new Employee();
employee.setId(rs.getInt("id"));
employee.setFirstName(rs.getString("firstName"));
employee.setLastName(rs.getString("lastName"));
employee.setTitle(rs.getString("title"));
/*employee.setPicture(rs.getString("picture"));
employee.setReportCount(rs.getInt("reportCount"));*/
return employee;
}
}
J'ai créé le répertoire de base de données avec le nom de la table comme employé avec les champs id,prenom,nom,titre.
Maintenant, j'ai le fichier html dans le web-contenu du dossier de la même projet .
<!DOCTYPE HTML>
<html>
<head>
<title>Employee Directory</title>
</head>
<body>
<h1>Employee Directory</h1>
<ul id="employeeList"></ul>
<script src="http://code.jquery.com/jquery-1.7.min.js"></script>
<script src="js/employeelist.js"></script>
</body>
</html>
employeelist script
getEmployeeList();
function getEmployeeList() {
$.getJSON(serviceURL + 'employees', function(data) {
$('#employeeList li').remove();
var employees = data.employee;
$.each(employees, function(index, employee) {
$('#employeeList').append(
'<li><a href="employeedetails.html#' + employee.id + '">'
+ employee.firstName + ' ' + employee.lastName + ' ('
+ employee.title + ')</a></li>');
});
});
}
Cela montre la extact employé de détails dans la page d'Index.
Maintenant, j'ai été de créer une page html dans un autre projet où je vais mettre la même somme.getJSON appel dans lequel il est précisé ci-dessus vont se jeter d'erreur dans la console
XMLHttpRequest cannot load http://localhost:8181/jQueryJAXRS/rest/employees. Origin null is not allowed by Access-Control-Allow-Origin.
En fait, j'essaie de développer une application avec le client et le serveur d'infrastructure .J'ai donc besoin d'avoir des fichiers html dans le client de consommer le maillot de services web dans serverside.Il est vraiment utile si je fais $.getJSON ou $.appel ajax à partir du fichier html dans un autre projet afin de consommer le service web.
when i use this url http://localhost:8181/jQueryJAXRS/rest/employees in my browser
il montre xml
<employees>
<employee>
<firstName>john</firstName>
<id>1</id>
<lastName>doe</lastName>
<reportCount>0</reportCount>
<title>trainee</title>
</employee>
<employee>
<firstName>james</firstName>
<id>2</id>
<lastName>dane</lastName>
<reportCount>0</reportCount>
<title>developer</title>
</employee>
<employee>
<firstName>ramsy</firstName>
<id>4</id>
<lastName>stuart</lastName>
<reportCount>0</reportCount>
<title>QA</title>
</employee>
</employees>
mais quand j'essaie à travers script façon de montrer de la SCRO erreur se produit. Suggérer quelques idées va vraiment m'aider.
Merci d'avance .
OriginalL'auteur Rajan | 2013-11-11
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser De la SCRO.
:
Alors vous devez utiliser un filtre dans votre web.xml :
<?xml version="1.0" encoding="UTF-8"?> <web-app> <display-name>EmployeeDirectory</display-name><servlet> <servlet-name>Jersey</servlet-name> <servlet-class>com.soleil.jersey.le spi.le conteneur.servlet.ServletContainer</servlet-class> <init-param> <param-name>com.soleil.jersey.config.de la propriété.forfaits</param-name> <param-value>org.coenraets</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey</servlet-name> <url-pattern>/repos/*</url-pattern> </servlet-mapping> <filtre>tien</filter></webapp> MAINTENANT, l'obtention d'état http 404 , après la SCRO pot ajouté
OriginalL'auteur Jhanvi
Grâce Jhanvi à proposer cette idée de la SCRO. Ici, j'ai expliquer plus pour avoir une meilleure clarté et de rendre la solution complète de ce problème
Je consulter ce lien pour résoudre ce problème
LA SCRO JAR
Télécharger de la SCRO jar et java-propriété jar.Mettre ces pots dans le dossier lib de tomcat serveur.Puis ajouter le filtre suivant que chlidnode de web-app dans web.xml .
Cette solution permettra de résoudre la question de la SCRO .
OriginalL'auteur Rajan
Merci pour cette question! Il me conduisent à une façon plus simple d'importer le pot à l'aide de maven et simplement ajouter les dépendances à l'pom.xml
Vérifier les versions actuelles:
http://mvnrepository.com/artifact/com.thetransactioncompany/cors-filter/1.9
http://mvnrepository.com/artifact/com.thetransactioncompany/java-property-utils/1.9
OriginalL'auteur Stefan Wasserbauer
Si quelqu'un ne veux pas ajouter des bibliothèques tierces, ils peuvent créer leurs propres filtres pour ajouter des en-têtes de réponse.
Veuillez vous référer Comment ajouter le soutien de la SCRO sur le côté serveur en Java avec Jersey
OriginalL'auteur Atul Kumbhar