我試圖將數字支付oauth集成到我的應用程序中,但我遇到了這些服務所需的重定向問題。 PayPal和Stripe都需要重定向到他們的網站進行審批,然後再重定向到我的網站。但是,我的瀏覽器阻止了重定向到付費服務,因爲它聲稱,目前沒有訪問控制允許來源標題。然而我知道Stripe支持CORS頭文件:https://stripe.com/blog/stripejs-and-jsonp。我可能做錯了什麼?由於不正確的CORS處理,瀏覽器請求是否被重定向?
重要,如果我手動鍵入我的服務器(localhost.com/authorize)所需的URI到我的瀏覽器,瀏覽器重定向就好,但如果在我的客戶端腳本執行GET請求同一個URI ,瀏覽器拒絕發生此錯誤的重定向:
XMLHttpRequest無法加載 connect.stripe.com/oauth/authorize。 請求的 資源上沒有「Access-Control-Allow-Origin」標題。原因'127.0.0.1:3000'因此不允許 訪問。響應有HTTP狀態代碼400
因此,使用瀏覽器地址欄中的手動GET請求,並使用AJAX的方案GET請求之間的唯一差別是什麼瀏覽器識別爲請求的引發劑。爲什麼發起人要確定這一行動的成敗?
我執行從我的客戶一個jQuery Ajax請求到我的服務器,像這樣:
$.ajax({
url: '/authorize',
type: 'GET',
success: function(data) {
// do something
}.bind(this),
error: function() {
// do something
}.bind(this)
});
我使用example code from stripe執行授權和重定向:
app.get('/authorize', function(req, res) {
// Redirect to Stripe /oauth/authorize endpoint
res.redirect(AUTHORIZE_URI + '?' + qs.stringify({
response_type: 'code',
scope: 'read_write',
client_id: CLIENT_ID
}));
});
通常,具有CORS支持的Web服務需要您爲其設置AJAX調用所來自的域。您可能需要將「127.0.0.1」(或「127.0.0.1:3000」)添加到您的配置中,以便Stripe接受來自該域的請求。 –