On Fri, Sep 08, 2000 at 11:32:39AM +0800, Li Dongfeng wrote:
> I am writing a service for other pages to
> use as form action. How can I reference
> the caller object in DTML/python?
> 
> I can only think of this: First use PARENTS[-1]
> to get to the root object of the site.
> Then split the PATH_INFO containing the caller's
> path, and go down from the root to every subfolder
> in PATH_INFO and then get to the caller object.
> But this is not very elegant.
> 
> Can anyone give better solution to this?

PATH_INFO only tells you something about the service object, not about the
calling page. If you use this as a FORM action target, it's the browser
that makes the call, not Zope.

You can, in many cases, determine the browser URL by looking at
HTTP_REFERER, but many people and companies use proxies and firewalls to
filter this out nowadays; it is considered sensitive information.

If this app is targeted at a intranet or other controlled environment, you
could dictate the presence of HTTP_REFERER, and rely on that, otherwise
you will have to add a reference as a hidden form field generated by the
calling object.

Once you have a URL of the calling object, you can use the Traversal
interface to turn that URL into an object reference.

-- 
Martijn Pieters
| Software Engineer            mailto:[EMAIL PROTECTED]
| Digital Creations          http://www.digicool.com/
| Creators of Zope               http://www.zope.org/
| ZopeStudio: http://www.zope.org/Products/ZopeStudio
-----------------------------------------------------

_______________________________________________
Zope maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )

Reply via email to