Exposing custom headers for CORS

Exposing custom headers for CORS

in API Development

Posted by: levionan.8506

levionan.8506

Hi,

I was trying out GW2 API using AngularJS (a Javascript framework) and I’m encountering an issue with respect to accessing the custom headers (e.g. X-Page-Size, X-Page-Total, etc) in the HTTP response.

Basically, the API server does not explicitly include the Access-Control-Expose-Headers in its response. The link below explains it better.

Refer: http://stackoverflow.com/questions/18124483/angularjs-ignoring-some-headers

Exposing custom headers for CORS

in API Development

Posted by: Pat Cavit.9234

Pat Cavit.9234

Web Programming Lead

Next

Oof, good point. We’ll get it onto the backlog.

Exposing custom headers for CORS

in API Development

Posted by: Pat Cavit.9234

Previous

Pat Cavit.9234

Web Programming Lead

Next

Hah, Lawton beat me to it. This is on dev now, we’ll bang on it for a bit & make sure it’s good.

Exposing custom headers for CORS

in API Development

Posted by: levionan.8506

levionan.8506

That’s sweet. Thanks!

Exposing custom headers for CORS

in API Development

Posted by: RedGlow.2715

RedGlow.2715

Hello!

I’m also working with the APIs and Angular.

Lately I’ve tried using the Authorization header instead of the query parameter in order to send an authorized request to some API endpoints – tokeninfo in this specific instance.

It seems to me that the situation is not really working yet: when the browser launches an OPTIONS request (apparently the presence of the Authorization header prompts the library/browser to preflight the request, and I don’t know enough of CORS to say if this is correct or not), the tokeninfo endpoint replies with a 404 (?).

May it help if I open a ticket on GitHub?

Exposing custom headers for CORS

in API Development

Posted by: smiley.1438

smiley.1438

Simply put: preflight requests are not supported. Thats why the access_token parameter exists in first place.

Exposing custom headers for CORS

in API Development

Posted by: Lawton Campbell

Previous

Lawton Campbell

Web Programmer

Lately I’ve tried using the Authorization header instead of the query parameter in order to send an authorized request to some API endpoints – tokeninfo in this specific instance.

Due to the way our backend works, we don’t support OPTIONS requests at all.

As a workaround, you should pass the API key via the ?access_token query parameter, e.g.

GET /v2/tokeninfo?access_token=$APIKEY

(Making better documentation is on my todo list ;_;)

Exposing custom headers for CORS

in API Development

Posted by: smiley.1438

smiley.1438

(apparently the presence of the Authorization header prompts the library/browser to preflight the request, and I don’t know enough of CORS to say if this is correct or not)

Just to add: you are right here. If there’s a custom header set, a preflight request is being sent in order to determine if the main request is safe to send.

See https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests

Exposing custom headers for CORS

in API Development

Posted by: RedGlow.2715

RedGlow.2715

Lately I’ve tried using the Authorization header instead of the query parameter in order to send an authorized request to some API endpoints – tokeninfo in this specific instance.

Due to the way our backend works, we don’t support OPTIONS requests at all.

As a workaround, you should pass the API key via the ?access_token query parameter, e.g.

GET /v2/tokeninfo?access_token=$APIKEY

(Making better documentation is on my todo list ;_;)

Oh, very well! I just thought the Authorization header seemed like a cleaner way to proceed, but I’ll just keep on using the access_token query parameter then :-)

In the meanwhile, I’ve added a paragraph in the API key page explaining the two possible alternatives and the problem here stated: http://wiki.guildwars2.com/wiki/API:API_key. (I hope the wiki masters won’t punish me because I’ve put the information in the wrong place, or with the wrong formatting, or anything else of the like ;-D)