Setting Tempo Dynamic DropDown Work Attribute via Scriptrunner REST Endpoint

Adam Cave October 23, 2019

I'm following the ScriptRunner and Tempo tutorials to fill a Tempo Dynamic DropDown Work Attribute

 

It was very simple and everything looks good and I can get the JSONP through my browser using: https://MyJiraBase/rest/scriptrunner/latest/custom/tempoWorkType?callback=fn

tempoWorkType is my endpoint

 

But when I go to Tempo the dropdown is empty. So I did an inspect on the web page in Google Chrome and see this: Refused to execute script from 'https://MyJiraBase/rest/scriptrunner/latest/custom/tempoWorkType?callback=__jp0' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled.

 

Why is the MIME type JSON when there is a callback? Shouldn't it know that it's JSONP?

I don't see a MediaType of JSONP or Javascript for Groovy. How can I fix this? Any help is greatly appreciated. Thank you.

1 answer

1 vote
Mario Carabelli March 12, 2021

For the requester the answer will be to late. But i struggled for ~3hours at the exact same issue and then realised. that the adaptavist library version of the rest-endpoint, has an extra-tab with the code for data center installations (https://library.adaptavist.com/entity/populate-tempo-dynamic-drop-down-using-a-rest-endpoint). It has this critical change of code with the telling comment:

 // Adding 'application/javascript' is needed to prevent a browser error like this: script cannot be executed due to
// wrong MIME type.
// For example, the error in Chrome is: "Refused to execute script from '*' because its MIME type
// ('application/javascript') is not executable, and strict MIME type checking is enabled."
Response.ok(resp)
.header('Content-Type', 'application/javascript')
.build()

As soon as I used this variant it just worked.

grml...

Hope it saves someone the hours I had to spent. :D Have a nice day!

Suggest an answer

Log in or Sign up to answer