2014-12-01 53 views
-1

我試着使用JsSIP,但是當我使用RequireJS,以便能夠在客戶端CHROME回報要求:RequireJS +的NodeJS返回的XMLHttpRequest無法加載的「http」否「訪問控制允許來源」頭

XMLHttpRequest cannot load http://localhost/videochat/videonodejs/scripts/jssip. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.

它的全部在localhost中,那麼可能是什麼原始問題?我的網址中有端口號,可以嗎?

+0

這不是「所有本地主機」;它是不同的端口。 – SLaks 2014-12-01 19:34:12

+0

使用CORS跨域交談 – dandavis 2014-12-01 19:39:48

回答

2

jssip請求在端口80上,應用程序在端口3000上。根據同源策略,這些不是相同的來源。

+1

由於我無法將服務器端口更改爲80,因此我正在查看http://jssip.net/documentation/0.5.x/getting_started/,但沒有關於如何更改端口的文檔對於JsSIP,任何想法如何?順便說一句,感謝非凡的快速答案^^。 – 2014-12-01 19:50:29

+0

以前從未使用jssip,但據稱您可以自己設置URI:http://jssip.net/documentation/0.5.x/api/ua_configuration_parameters/ – Paul 2014-12-02 02:06:54

0

服務器需要指定Access-Control-Allow-Origin標頭中允許的來源。通常情況下,此值設置爲'*',因此它會捕獲所有客戶端來源,或者將其設置爲允許來源的白名單。這是在服務器代碼中定義的,並且是處理跨域請求的ay API所必需的。

如果添加Access-Control-Allow-Origin標頭不起作用,請查看您的應用程序的CORS配置。如果它不起作用,您最終可能需要查看「飛行前」請求。它們是發送到服務器以確定即將到來的請求的服務器支持的初始請求,並且它的HTTP方法是OPTIONS。因此,如果您處理服務器代碼,則需要將「OPTIONS」添加到允許的方法列表中,以便您可以處理該飛行前請求,從而通知瀏覽器它應該繼續並將真實請求發送到服務器.....我相信你可以通過啓動一個命令行標誌(我認爲是--disable-web-security)在Chrome中禁用這種行爲。希望這能夠幫助你一些。

+0

Paul可能對此有所瞭解。 – 2014-12-01 19:49:00

相關問題