Send Mediawiki-api mailing list submissions to
mediawiki-api@lists.wikimedia.org
To subscribe or unsubscribe via the World Wide Web, visit
https://lists.wikimedia.org/mailman/listinfo/mediawiki-api
or, via email, send a message with subject or body 'help' to
mediawiki-api-request@lists.wikimedia.org
You can reach the person managing the list at
mediawiki-api-owner@lists.wikimedia.org
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Mediawiki-api digest..."
Today's Topics:
1. Wikimedia API redirect 301 (viviana paga)
2. Re: Wikimedia API redirect 301 (bawolff)
----------------------------------------------------------------------
Message: 1
Date: Sat, 28 Apr 2018 14:33:29 +0000
From: viviana paga <viviana.paga@hotmail.it>
To: "mediawiki-api@lists.wikimedia.org"
<mediawiki-api@lists.wikimedia.org>
Subject: [Mediawiki-api] Wikimedia API redirect 301
Message-ID:
<DB6PR06MB3128D1B493601C07A5FF46C5E48C0@DB6PR06MB3128.eurprd06.prod.outlook.com>
Content-Type: text/plain; charset="windows-1252"
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.paga@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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <
https://lists.wikimedia.org/pipermail/mediawiki-api/attachments/20180428/2f89c4d1/attachment-0001.html>
------------------------------
Message: 2
Date: Sat, 28 Apr 2018 16:48:41 +0000
From: bawolff <bawolff+wn@gmail.com>
To: "MediaWiki API announcements & discussion"
<mediawiki-api@lists.wikimedia.org>
Subject: Re: [Mediawiki-api] Wikimedia API redirect 301
Message-ID:
<CA+oo+DUNvaW7mQtWXRm1tCAFqLXg9TeckTVjcT-PhXwBdrmVeQ@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"
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.paga@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.paga@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
>
------------------------------
Subject: Digest Footer
_______________________________________________
Mediawiki-api mailing list
Mediawiki-api@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-api
------------------------------
End of Mediawiki-api Digest, Vol 129, Issue 2
*********************************************