I don't know if this helps at all, but I spent the whole day tapping my head on a similar issue. Canvas (IFRAME) works fine. Url apps.facebook.com/appname/tab/creates a page on its own, but the tab does not work, despite the fact that the canvas URL is the correct apps.facebook.com/appname and the tab is / tab /
In the end, I traced a problem with setting up fake protection in my application, which checked all incoming requests. Thus, even though the messages were accepted, the application tested them to protect fakes, which, obviously, they did not leave Facebook.
I skipped this for the tab only and everything worked fine. Now I do not know that you are an environment, but there may be something that will help you. Hope so. Good luck.