烙印99
2023-05-01 14:10:29
我在js中用xmlhttprequest對象向node.js服務端發送POST請求,數據全部是json格式,但是因為前端和服務端沒部署到一個域下,結果訪問前端的時候就提示is not allowed by Access-Control-Allow-Origin……
2 回答

慕娘9325324
TA貢獻1783條經驗 獲得超4個贊
一般是用jsonp,原理很簡單,比如你在A域名請求B域名:
1. 在A域名的頁面中使用script標簽src寫成B域名中服務器的URL
script標簽是可以跨域的,比如你調用Google Map或Google Analytics時引入的js就是google域名下的。
2. 后端程序在最后需要把一段js代碼的字符串print出來,這樣就可以運行A域名js中寫好的callback方法,將要返回的數據放入參數就可以了
A域名中的js文件:
<script type="text/javascript" src="http://www.b.com/action?callback=myCallback"></script><script type="text/javascript"> function myCallback (data) { alert(data); }</script>
B域名中服務器
String cb = get('callback'); Int b = 'return data';print('<script type="text/javascript"> ' + cb + '(' + b + '); </script>');
后端print數據到頁面中后就會這樣
<script type="text/javascript"> myCallback('return data');</script>

翻閱古今
TA貢獻1780條經驗 獲得超5個贊
我做過這樣的jsonp 很簡單的 服務器返回的js本插入到頭部
補充下服務器端 以java 為例子
struts.xml 代碼
<action name="xx" class="xxx" method="xxxx">
<result name="success" type="json">
<param name="callbackParameter">callback</param> <!-- callback 可以是自己定義的請求參數-->
</result>
</action>
這樣就Ok了
添加回答
舉報
0/150
提交
取消