การส่งอีเมลจากภายนอกเว็บไซต์หรือแอปพลิเคชัน asp.net

เป็นไปได้ไหมที่จะโพสต์ข้อมูลจากหน้า html โดยใช้ Jquery ไปยังเว็บไซต์ asp.net อื่น

พูด www.site1.com/mail.html - > www.site2.com/mailServ.aspx

ใช้ jquery ajax ฉันสามารถใช้โค้ดนี้เพื่อโพสต์ไปที่โค้ดด้านหลัง [webmethod]

ดังนั้นแทนที่จะใช้โค้ดภายในเว็บไซต์เดียวกัน (ไซต์2) รหัสจะถูกส่งจากไซต์1

นี่คือรหัสที่ฉันใช้ในการโพสต์ข้อมูลแบบฟอร์มไปยังวิธีการทางเว็บภายในแอปพลิเคชันเว็บไซต์เดียวกัน

function jQuerySendMailCsCodeBehind(resluts) {

    var SentClientinfo = []
    SentClientinfo.push({ key: "SentClientinfo", value: resluts });
    var CurrpageURL = "default.aspx/"; <---
    var WebmethodName = "StartTest";
    var StageIdentifyer = "stage1";
    var Post_TargetUrl = CurrpageURL + WebmethodName;

    jQueryAajaxNoPostBack(Post_TargetUrl, SentClientinfo, StageIdentifyer);
}

ฉันพยายามโพสต์จากนอกแอปพลิเคชัน

ฉันก็เลยใช้

    var CurrpageURL = "http://www.site2.com/default.aspx/"; 

จากไซต์อื่น (ไซต์ 1) เว็บไซต์ html ที่ไม่ใช่ asp.net แต่แนวคิดนี้ใช้งานไม่ได้ในความเป็นจริง (:

มีตัวเลือกที่แอปพลิเคชัน webForms / เว็บไซต์ asp.net จะยอมรับคำขอจากรหัสเว็บไซต์อื่นของ ajax/jquery หรือไม่


person Regina Jerusalemsky    schedule 23.06.2013    source แหล่งที่มา


คำตอบ (2)


ตามค่าเริ่มต้น JavaScript จะไม่ได้รับอนุญาตให้เข้าถึงโดเมนอื่นนอกเหนือจากโดเมนต้นกำเนิดด้วยเหตุผลด้านความปลอดภัย คุณไม่ต้องการให้ JavaScript บนไซต์ของฉันเข้าถึงเว็บไซต์ธนาคารของคุณ โดยใช้คุกกี้การเข้าสู่ระบบธนาคารของคุณ หากคุณบังเอิญดูไซต์ของฉันในขณะที่ลงชื่อเข้าใช้ธนาคาร

วิธีหนึ่งในการแก้ไขคือ JsonP แต่เท่าที่ฉันเข้าใจ ส่วนใหญ่แล้วใช้เพื่อดึงข้อมูล

สิ่งที่คุณกำลังมองหาคือการแบ่งปันทรัพยากรข้ามแหล่งกำเนิด หรือสั้น CORS เพื่อดำเนินการดังกล่าว site2 ของคุณจะต้องตั้งค่าส่วนหัว Access-Control-Allow-Origin และผู้ใช้จะต้องใช้เบราว์เซอร์ที่รองรับ CORS (ไม่ใช่ทั้งหมด โปรดดูข้อมูลในหน้าวิกิพีเดีย)

person Anders Abel    schedule 23.06.2013

คุณไม่สามารถส่งคำขอข้ามเว็บไซต์ด้วย javascript คุณต้องใช้ jsonp

jQuery รองรับ jsonp ดูตัวอย่างต่อไปนี้

$.ajax({
    type: 'GET',
    url: 'http://githubbadge.appspot.com/badge/torvalds',
    dataType: 'jsonp',
    success: function(json) {
        var result = '<h3>' + json.user.login + '</h3>' +
                     '<p>Languages: ' + json.languages + '</p>' +
                     '<p>Followers: ' + json.user.followers + '</p>';
        $('#badge').append(result);
    }
});
person BrunoLM    schedule 23.06.2013
comment
ขอบคุณ . ฉันกำลังเยี่ยมชมทั้งสองลิงก์ คุณช่วยโพสต์โค้ดที่ใช้สิ่งที่อธิบายไว้ที่นั่นได้ไหม (ฉันมีปัญหาในการทำความเข้าใจสิ่งที่เขียน ฉันคิดว่านี่ควรเป็นโค้ดตัวอย่างง่ายๆ) เช่น site1 jasonp กับการยอมรับ site2 jsonp พูดว่า: site1 กำลังโพสต์ ('#TBX_UserName').val() ไปที่ site2 - person Regina Jerusalemsky; 24.06.2013
comment
ขอบคุณสำหรับข้อมูลที่คุณมีประโยชน์มาก แม้ว่านี่จะเป็นวิธีแก้ปัญหาบางส่วนเพราะฉันจะต้องฟังจาก site2 ถึง site1 ตลอดเวลาเพื่อตรวจสอบว่ามีการโพสต์ข้อมูลหรือไม่ CORS ให้ตัวเลือกที่ดีกว่าแก่เราหรือไม่ ฉันต้องเรียนรู้เพิ่มเติมเพื่อตรวจสอบว่ามีการใช้งานและข้อจำกัดอะไรบ้าง - person Regina Jerusalemsky; 24.06.2013
comment
@ReginaJerusalemsky คุณสามารถรับข้อมูลเพิ่มเติมได้ที่นี่ stackoverflow.com/a/6879276/340760 มีตัวอย่างการใช้ Twitter jsonp url ... เซิร์ฟเวอร์ควรส่งคืน method( normal_json_response ) จากนั้นคุณเพียงแค่ฉีดองค์ประกอบสคริปต์ด้วย URL ระยะไกล เมื่อโหลดแล้วจะดำเนินการเมธอดผ่านพารามิเตอร์ json - person BrunoLM; 24.06.2013