iron-meteor / iron-router

A client and server side router designed specifically for Meteor.
MIT License
1.98k stars 412 forks source link

URIError: URI malformed #1117

Open miraten opened 9 years ago

miraten commented 9 years ago

Someone or something tried to request URI which does not exist. The request URI is

http://mydomain.com/list?stx=%C7%E0%BA%B9%C0%DA%B8%AE

Then it should show 404 error. However it shows as follows:

URIError: URI malformed
  at decodeURIComponent (native)
  at /Users/leesangwon/Works/Bookpal/bookpal/.meteor/local/build/programs/server/packages/iron_url.js:304:17
  at Array.forEach (native)
  at Function._.each._.forEach (/Users/leesangwon/Works/Bookpal/bookpal/.meteor/local/build/programs/server/packages/underscore.js:139:11)
  at Function.Url.fromQueryString (/Users/leesangwon/Works/Bookpal/bookpal/.meteor/local/build/programs/server/packages/iron_url.js:301:5)
  at Function.Url.parse (/Users/leesangwon/Works/Bookpal/bookpal/.meteor/local/build/programs/server/packages/iron_url.js:405:25)
  at Function.Url.normalize (/Users/leesangwon/Works/Bookpal/bookpal/.meteor/local/build/programs/server/packages/iron_url.js:258:19)
  at [object Object].Url.test (/Users/leesangwon/Works/Bookpal/bookpal/.meteor/local/build/programs/server/packages/iron_url.js:446:31)
  at [object Object].Handler.test (/Users/leesangwon/Works/Bookpal/bookpal/.meteor/local/build/programs/server/packages/iron_middleware-stack.js:106:29)
  at Function.Router.findFirstRoute (/Users/leesangwon/Works/Bookpal/bookpal/.meteor/local/build/programs/server/packages/iron_router.js:750:32)
  at Function.Router.createController (/Users/leesangwon/Works/Bookpal/bookpal/.meteor/local/build/programs/server/packages/iron_router.js:774:20)
  at Function.Router.dispatch (/Users/leesangwon/Works/Bookpal/bookpal/.meteor/local/build/programs/server/packages/iron_router.js:1308:25)
  at Object.router (/Users/leesangwon/Works/Bookpal/bookpal/.meteor/local/build/programs/server/packages/iron_router.js:611:12)
  at next (/Users/leesangwon/.meteor/packages/webapp/.1.1.4.qdg1vf++os+web.browser+web.cordova/npm/node_modules/connect/lib/proto.js:190:15)
  at Object.WebApp.rawConnectHandlers.use.contentTypeOptions [as handle] (/Users/leesangwon/Works/Bookpal/bookpal/.meteor/local/build/programs/server/packages/browser-policy-common.js:47:3)
  at next (/Users/leesangwon/.meteor/packages/webapp/.1.1.4.qdg1vf++os+web.browser+web.cordova/npm/node_modules/connect/lib/proto.js:190:15)
  at /Users/leesangwon/Works/Bookpal/bookpal/.meteor/local/build/programs/server/packages/meteorhacks_fast-render.js:662:7
  at /Users/leesangwon/Works/Bookpal/bookpal/.meteor/local/build/programs/server/packages/meteorhacks_fast-render.js:271:7
cmather commented 9 years ago

Interesting. It appears that decodeURIComponent can throw if the value is "malformed". Not sure what it means yet. Solution is probably to put a try catch around it. But I'll investigate.

EDIT:

for example, type this into chrome debugger:

decodeURIComponent('%C7%E0%BA%B9%C0%DA%B8%AE')
cmather commented 9 years ago

fixed in iron:url