Author: tpalsulich
Date: Sat Mar 28 16:32:47 2015
New Revision: 1669799
URL: http://svn.apache.org/r1669799
Log:
TIKA-1586. Enable CORS requests on Tika server.
This fixes #37.
Modified:
tika/trunk/CHANGES.txt
tika/trunk/tika-server/pom.xml
tika/trunk/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java
Modified: tika/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/tika/trunk/CHANGES.txt?rev=1669799&r1=1669798&r2=1669799&view=diff
==============================================================================
--- tika/trunk/CHANGES.txt (original)
+++ tika/trunk/CHANGES.txt Sat Mar 28 16:32:47 2015
@@ -1,5 +1,8 @@
Release 1.8 - Current Development
+ * Tika server can now enable CORS requests with the command line
+ "--cors" option (TIKA-1586).
+
* Update jhighlight dependence to avoid using LGPL license (TIKA-1581)
* Updated HDF and NetCDF parsers to output file version in
Modified: tika/trunk/tika-server/pom.xml
URL:
http://svn.apache.org/viewvc/tika/trunk/tika-server/pom.xml?rev=1669799&r1=1669798&r2=1669799&view=diff
==============================================================================
--- tika/trunk/tika-server/pom.xml (original)
+++ tika/trunk/tika-server/pom.xml Sat Mar 28 16:32:47 2015
@@ -77,6 +77,11 @@
<version>${cxf.version}</version>
</dependency>
<dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-rs-security-cors</artifactId>
+ <version>${cxf.version}</version>
+ </dependency>
+ <dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.4</version>
Modified:
tika/trunk/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java
URL:
http://svn.apache.org/viewvc/tika/trunk/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java?rev=1669799&r1=1669798&r2=1669799&view=diff
==============================================================================
---
tika/trunk/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java
(original)
+++
tika/trunk/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java
Sat Mar 28 16:32:47 2015
@@ -35,6 +35,7 @@ import org.apache.cxf.jaxrs.JAXRSBinding
import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
import org.apache.cxf.jaxrs.lifecycle.ResourceProvider;
import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
+import org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter;
import org.apache.tika.Tika;
import org.apache.tika.config.TikaConfig;
import org.apache.tika.server.resource.DetectorResource;
@@ -64,6 +65,7 @@ public class TikaServerCli {
private static Options getOptions() {
Options options = new Options();
+ options.addOption("c", "cors", true, "origin allowed to make CORS
requests (default=NONE)\nall allowed if \"all\"");
options.addOption("h", "host", true, "host name (default = " +
DEFAULT_HOST + ')');
options.addOption("p", "port", true, "listen port (default = " +
DEFAULT_PORT + ')');
options.addOption("l", "log", true, "request URI log level ('debug' or
'info')");
@@ -116,6 +118,16 @@ public class TikaServerCli {
logger.info("Unsupported request URI log level: " +
logLevel);
}
}
+
+ CrossOriginResourceSharingFilter corsFilter = null;
+ if (line.hasOption("cors")) {
+ corsFilter = new CrossOriginResourceSharingFilter();
+ String url = line.getOptionValue("cors");
+ List<String> origins = new ArrayList<String>();
+ if (!url.equals("*")) origins.add(url); // Empty list
allows all origins.
+ corsFilter.setAllowOrigins(origins);
+ }
+
// The Tika Configuration to use throughout
TikaConfig tika = TikaConfig.getDefaultConfig();
@@ -147,6 +159,9 @@ public class TikaServerCli {
if (logFilter != null) {
providers.add(logFilter);
}
+ if (corsFilter != null) {
+ providers.add(corsFilter);
+ }
sf.setProviders(providers);
sf.setAddress("http://" + host + ":" + port + "/");