I have a simple mobile hybrid application built for our in house IT team. The application is built in html/javascript in a Cordova wrapper and installed on IOS/Android devices. All requests to jira are made via ajax. Prior to the recent update to 7.0 everything worked smoothly, after the update every POST function is throwing a 500 error. Only the Post functions.
The shortest example would be hitting:
https://jira.ourjiraserver.com/jira/rest/api/2/issue/{issuekey}/comment
using basic authentication in the headers, content type application/json, access-control-allow-origin set to *,
and a simple comment for the data field.
{"body":"comment"} is the data being posted.
As a quick workaround, I setup some proxy api endpoints on a node server I already had in place. It makes the same calls as my application and passes the same data and the POST requests are successful. The main difference in the headers between the api proxy and my app are the origin... when requests come from my phone the origin shows as "file://".
Any help figuring this out would be great. I have attached the error stack below.
The Error stack is huge, but here ya go...
1. message: "Expected authority at index 7: file://"
2. stack-trace: "java.lang.IllegalArgumentException: Expected authority at index 7: file://↵ at java.net.URI.create(URI.java:852)↵ at com.atlassian.applinks.cors.auth.DefaultCorsService.getApplicationLinksByOrigin(DefaultCorsService.java:56)↵ at com.atlassian.applinks.cors.auth.AppLinksCorsDefaults.allowsOrigin(AppLinksCorsDefaults.java:42)↵ at com.atlassian.plugins.rest.common.security.jersey.XsrfResourceFilter$1.apply(XsrfResourceFilter.java:255)↵ at com.atlassian.plugins.rest.common.security.jersey.XsrfResourceFilter$1.apply(XsrfResourceFilter.java:252)↵ at com.google.common.collect.Iterators.indexOf(Iterators.java:778)↵ at com.google.common.collect.Iterators.any(Iterators.java:684)↵ at com.google.common.collect.Iterables.any(Iterables.java:623)↵ at com.atlassian.plugins.rest.common.security.jersey.XsrfResourceFilter.isAllowedViaCors(XsrfResourceFilter.java:251)↵ at com.atlassian.plugins.rest.common.security.jersey.XsrfResourceFilter.passesAdditionalBrowserChecks(XsrfResourceFilter.java:177)↵ at com.atlassian.plugins.rest.common.security.jersey.OriginBasedXsrfResourceFilter.filter(OriginBasedXsrfResourceFilter.java:22)↵ at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:277)↵ at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)↵ at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)↵ at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)↵ at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)↵ at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)↵ at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)↵ at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)↵ at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)↵ at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)↵ at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)↵ at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.doFilter(RestDelegatingServletFilter.java:178)↵at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:795)↵ at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:73)↵ at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)↵ at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)↵ at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)↵ at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)↵ at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)↵ at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)↵ at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)↵ at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilterInternal(RestServletUtilsUpdaterFilter.java:26)↵ at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilter(RestServletUtilsUpdaterFilter.java:40)↵ at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)↵ at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)↵ at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)↵ at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26)↵ at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)↵ at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)↵ at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)↵ at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26)↵ at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)↵ at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)↵ at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)↵ at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26)↵ at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)↵ at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)↵ at com.atlassian.p…Filter.java:78)↵ at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)↵ at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)↵ at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)↵ at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(ChainedFilterStepRunner.java:86)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)↵ at com.atlassian.core.filters.cache.AbstractCachingFilter.doFilter(AbstractCachingFilter.java:33)↵ at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)↵ at com.atlassian.core.filters.encoding.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:41)↵ at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)↵ at com.atlassian.jira.web.filters.PathMatchingEncodingFilter.doFilter(PathMatchingEncodingFilter.java:45)↵ at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)↵ at com.atlassian.jira.startup.JiraStartupChecklistFilter.doFilter(JiraStartupChecklistFilter.java:79)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)↵ at com.atlassian.jira.web.filters.MultipartBoundaryCheckFilter.doFilter(MultipartBoundaryCheckFilter.java:41)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)↵ at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(ChainedFilterStepRunner.java:86)↵ at com.atlassian.jira.web.filters.JiraFirstFilter.doFilter(JiraFirstFilter.java:62)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)↵ at com.atlassian.gzipfilter.GzipFilter.doFilterInternal(GzipFilter.java:115)↵ at com.atlassian.gzipfilter.GzipFilter.doFilter(GzipFilter.java:92)↵ at com.atlassian.jira.web.filters.gzip.JiraGzipFilter.doFilter(JiraGzipFilter.java:56)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)↵ at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)↵ at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)↵ at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)↵ at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)↵ at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)↵ at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)↵ at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)↵ at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1086)↵ at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:659)↵ at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)↵ at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1558)↵ at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1515)↵ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)↵ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)↵ at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)↵ at java.lang.Thread.run(Thread.java:745)↵Caused by: java.net.URISyntaxException: Expected authority at index 7: file://↵ at java.net.URI$Parser.fail(URI.java:2848)↵ at java.net.URI$Parser.failExpecting(URI.java:2854)↵ at java.net.URI$Parser.parseHierarchical(URI.java:3102)↵ at java.net.URI$Parser.parse(URI.java:3053)↵ at java.net.URI.<init>(URI.java:588)↵ at java.net.URI.create(URI.java:850)↵ ... 208 more↵"
3. status-code: 500