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
Ok I think I found something that will help us all out, http://stackoverflow.com/questions/23224508/cors-issue-with-tomcat-and-android-webview
very last post. Just trying to figure out how to add it at the moment. As I'm a newbie to Tomcat.
On further investigation, I think there is a fix. https://bz.apache.org/bugzilla/show_bug.cgi?id=60008
Seems to be a problem with tomcat. I cant seem to get it to work though even with tomcat 8.5 from latest JIRA install.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
It is most likely a CORS issue. Problem for me is that we host our own JIRA server and my IT team is not up for allowing me to tweak settings and restart the server a few times to figure it out...
My temporary solution was to set up a node server and bounce my api calls off it. I had no issues with that but now I am maintaining two sets of code...
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi, Have you found a solution? I have same issue and I don't want to use node js server, please help me
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Same problem here. Anything yet?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I am having the same problem trying to create issues via the API. Status code 500 with the same error you are receiving.
Any solution?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I have not found a solution yet but have a support ticket in asking for help. Several of the errors in the stack do reference the DefaultCorsService, but I am not sure what needs to be done to remedy the issue... I will bring the solution here if support provides one.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi, I am having the same issue. Did you find a solution? Is this a cross domain issue?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.