That header comes from https://cors-anywhere.herokuapp.com/ not
MediaWiki. However, its usually set if mediawiki redirects you, which
might happen if you are not using https.

However, https://cors-anywhere.herokuapp.com/ is not needed. &origin=*
will tell MediaWiki to send appropriate CORS * headers.

On top of that, you don't need CORS headers at all when using
&format=json&callback=foo as you could directly inject into a <script>
tag. Given you're not doing that, you probably don't want to set
callback= as that messes up JSON parsers.

Additionally, you are setting the incorrect content-type header
(You're doing a GET, so there should not be a content-type header),
the strict-transport-security header doesn't make sense for a client,
and if your in a browser, you can't override the origin header (if
you're not in a webbrowser, you may be able to override it, but there
should be no need to).

So in conclusion, you probably want to get rid of all ajaxPrefilter
stuff except the part setting Api-User-agent. You also probably want
to get rid of &callback= in the url, so you can properly parse the
returned data using JSON.parse

--
Brian

On Sat, Apr 28, 2018 at 2:33 PM, viviana paga <viviana.p...@hotmail.it> wrote:
> Hi everyone,
>
> I'm developing an Ajax webservice that query Wikimedia Api Service, but I
> get a very strange behavior; in fact my query sometimes works perfectly and
> sometimes doesn't work at all (301 internal redirect) .
>
> This is the response by the server:    X-Cors-Redirect-1: 301
> https://commons.wikimedia.…metadata&sroffset=0&callback=?
>
> Could you help me to understand why or what I miss in my code?
>
> This is my code :
>
> $.ajaxPrefilter(function (options) {
>             if (options.crossDomain && jQuery.support.cors)     {
>                 const https = (window.location.protocol === 'http:' ?
> 'http:' : 'https:');
>                 options.url = https + '//cors-anywhere.herokuapp.com/' +
> options.url;
>             }
>             if ( !options.beforeSend) {
>                 options.beforeSend = function (xhr) {
>                     xhr.setRequestHeader('Api-User-Agent',
> 'OpenArtImages/Beta (http://localhost:8080; viviana.p...@hotmail.it;
> Wikipedia User: Vivsss)');
>                     xhr.setRequestHeader('Content-Type', 'application/json;
> charset=UTF-8');
>                     xhr.setRequestHeader('Origin', 'http://localhost:8080');
>                     xhr.setRequestHeader('Strict-Transport-Security',
> 'max-age=106384710; includeSubDomains; preload');
>
>                     xhr.withCredentials = true;
>                 }
>             }
>         });
>
> firstRequest = $.get(
> 'https://commons.wikipedia.org/w/api.php?origin=*&action=query&list=search&format=json&srsearch=File:'+inputWord+incategory+'+fileh:>600&
> &prop=imageinfo|pageids|titles&srnamespace=6&rawcontinue=&srinfo=totalhits|suggestion&srlimit='+limit+'&iiprop=timestamp|user|url|size|sha1|mime|metadata'+offset+'&callback=?',
>         function (response) {
>                 ///// ........ I get Data ......... /////
> }
>
>
> Thank you so much,
> Viviana Paga
>
> _______________________________________________
> Mediawiki-api mailing list
> Mediawiki-api@lists.wikimedia.org
> https://lists.wikimedia.org/mailman/listinfo/mediawiki-api
>

_______________________________________________
Mediawiki-api mailing list
Mediawiki-api@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-api

Reply via email to