ASP.NET Cross Domain Form Submission


Not to be confused with cross page posting, cross domain submission allows us to post the contents of an ASP.NET form to a completely different domain.

To achieve this we will need to use a bit of javascript and you’ll need to resort to using regular HTML controls.

We will cover two cases.  The first is pretty easy.  You just need a form on your screen that will allow you to send the information to another domain.  The second will be more complex.  You need a form on your screen that you fill from your domain prior to sending to the second domain.

To start, create a new ASPX page.  You can use a master page if you want.  It won’t make much difference.

Because ASP.NET has it’s own FORM tags, to add another form tag into the output, you’ll want to close off the current form tag and start another.  The best way to do this is with a literal control.  This way the ASP.NET runtime engine will not be confused and any of the other runat=server controls you have on the page after this new form will continue to behave as expected.  However, you’ll want to make sure that any controls that produce input tags of their own all appear prior to the new form tag.

<%-- It is best if all your pages controls exist 
    prior to the new form here --%>
<asp:Literal ID="Literal1" runat="server" Text=
    '</form><form name="subform" action="newDomainAndPage" method="POST">'
 <input type="text" name="someName" />
 <input type="submit" name="submit" value="Submit" />

The submit button will now post to the site specified in “newDomainAndPage”

If all of the information on the page is going to go to the new domain, things get a little easier.  You won’t need this sub form.  But, you will need a small snippet of javascript to change the action attribute in the form tag that .NET creates for you.

<script type="text/javascript" language='javascript'>

where “remote” is the ID of the form in your form tag when it is rendered.  If you are using a master page, the form tag will be mangled.  You’ll either need to generate the javascript in your codebehind and grab the form tag’s ClientID or you’ll need to do a view source and see what it got changed to.  Using ClientID is preferred because the ID could change over time (say, when a new version of .NET comes out).

Related Post

  • Structure of my ASP.NET Web ApplicationsStructure of my ASP.NET Web Applications I’ve had some requests recently to describe how I structure my ASP.NET web applications.  To be clear, this is not the only way to structure your application.  It is MY way.  It wor...
  • Response.Redirect() and JavaScriptResponse.Redirect() and JavaScript Yesterday we covered issues surrounding using Response.Redirect in server side code. We noted that not handing it correctly could prevent code from running on the server that we want to run. T...
  • Getting started with jQuery and ASP.NETGetting started with jQuery and ASP.NET As promised, I am starting a series on jQuery.  Today our goal is to get a project setup in Visual Studio that uses jQuery.  We won't be explaining much in the way of syntax, but we will get our f...
  • jQuery – DialogjQuery – Dialog Ever since pop-up windows became “evil” in the web development world, developers have been looking for other ways to achieve the same effect.  The most common method is to use some sort of ab...
  • jQuery – Sliders (scrollbars to the rest of us)jQuery – Sliders (scrollbars to the rest of us) Scrollbars are a fundamental GUI widget that exist on every operating system.  With the browser continually morphing into it's own operating system it isn't surprising that there are several ...
  • Pingback: Dew Drop – November 12, 2009 | Alvin Ashcraft's Morning Dew

  • John Bubriski

    Something about that feels really wrong… but I’m sure that it works great. However, I would probably just resubmit the form data in the code behind. I’m pretty sure it’s easy to do that.

    • Dave


      Sometimes you have some interesting, even potentially better, ways of doing things. But in this case…?

      Even if you resubmit, you’ll need to do something similar to one of the two ways I suggest here, or you’ll have to go to a whole lot more work to do it.