1. 程式人生 > >XMLHttpRequest cannot load 跨域問題解決

XMLHttpRequest cannot load 跨域問題解決

在眾多站群中,不同功能的系統使用獨立的一個域名,各系統之間存在相互呼叫的關係。使用js的XMLHttpRequest呼叫其他域名提示跨域許可權不足。有些可能認為都同屬於同一個頂級域名或者說域名一模一樣怎麼會存在跨域問題.

先來看下錯誤
“XMLHttpRequest cannot load http://comment.ttlsa.com/api/post?id=1&msg=123123123&code=453423&username=涼白開 Origin http://www.ttlsa.com is not allowed by Access-Control-Allow-Origin.”

什麼是Access-Control-Allow-Origin
Access-Control-Allow-Origin是HTML5中定義的一種伺服器端返回Response header,用來解決資源(比如字型)的跨域許可權問題。
它定義了該資源允許被哪個域引用,或者被所有域引用(google字型使用*表示字型資源允許被所有域引用)。

什麼是資源跨域許可權
先來看看同域和不同域的長相
相同域
http://www.ttlsa.com/
http://www.ttlsa.com/nginx

不同域
http://www.ttlsa.com
http://bbs.ttlsa.com
https://www.ttlsa.com
http://www.ttlsa.com:8080

由此可見,相同域必須忙住協議相同、埠相同、域名相同. 只要其中一點不滿足那就是跨域

跨域案例
站點www.ttlsa.com需要呼叫comment.ttlsa.com/api/post.php,那麼這個post.php必須加上如下程式碼
程式碼1

1header("Access-Control-Allow-Origin: http://www.ttlsa.com");

程式碼2
header方式不能使用正則,例如*.ttlsa.com,不過我們可以使用如下方法,將內容echo到php響應內容中

1 echo'<meta http-equiv="Access-Control-Allow-Origin" content="*.ttlsa.com">'
;

目前還不清楚為什麼header裡面用不了正則,而meta裡面可以用正則.後續查詢原因,知道的兄弟請留言告知,小生在此謝過.

從上面的程式碼可以看出, 程式碼1安全性不夠,但是使用介面的人只會獲取到響應的body內容。程式碼2相對安全,但是響應的body內容體裡面包含<meta http-equiv="Access-Control-Allow-Origin" content="*.ttlsa.com">,多少影響介面的使用.

轉載請註明出處:http://www.ttlsa.com/html/3178.html

相關推薦

XMLHttpRequest cannot load 問題解決

在眾多站群中,不同功能的系統使用獨立的一個域名,各系統之間存在相互呼叫的關係。使用js的XMLHttpRequest呼叫其他域名提示跨域許可權不足。有些可能認為都同屬於同一個頂級域名或者說域名一模一樣怎麼會存在跨域問題. 先來看下錯誤 “XMLHttpRequest c

XMLHttpRequest cannot load file:///問題 Ajax本地問題

在嘗試以chrome.exe --allow-file-access-from-files的方法執行chorm和移動檔案位置等方法仍然不能解決報錯問題後,找到了解決的方法: 1.在Firefox上執行,不用 goole chorm 2.在本地架設一個伺服器,在伺服器上執行

Ajax請求問題,報錯XMLHttpRequest cannot load ''. No 'Access-Control-Allow-Origin' header is present on t

報錯:XMLHttpRequest cannot load  ''. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' ' is therefore 

關於JSON():XMLHttpRequest cannot load file:///E:/static/cartData.json. Cross origin requests..

關於JSON的問題:XMLHttpRequest cannot load file:///E:/static/cartData.json. Cross origin requests are ...

關於JavaScript的問題XMLHttpRequest cannot load

XMLHttpRequest cannot load 出現的問題如圖一樣: 我用的是本地的wampServer+php搭建的後臺 在PHP檔案的<?php 下面加入這一句就行: header(

XMLHttpRequest cannot load解決方法

log 屬性。 技術分享 es2017 disable 錯誤 cnblogs load http 在谷歌瀏覽器中調試接口,出現:XMLHttpRequest cannot load錯誤 需要配置谷歌瀏覽器,使瀏覽器支持跨域,步驟如下: 具體操作如下:首先需要關閉谷歌瀏覽器的

解決XMLHttpRequest非同步請求介面中,出現的cookie不存在問題

借鑑文章:https://www.cnblogs.com/limeiky/p/6927305.html 運用JS設定cookie、讀取cookie、刪除cookie JavaScript是執行在客戶端的指令碼,因此一般是不能夠設定Session的,因為Session是執行在伺服器端的。 而c

XMLHttpRequest cannot load解決方法

在谷歌瀏覽器中除錯介面,出現:XMLHttpRequest cannot load錯誤 需要配置谷歌瀏覽器,使瀏覽器支援跨域,步驟如下: 具體操作如下:首先需要關閉谷歌瀏覽器的所有視窗 右擊谷歌瀏覽器圖示——>屬性。彈出屬性對話方塊。在目標欄最後新增 --a

關於XMLHttpRequest cannot load javascript的問題解決

今天除錯前端的時候,點擊出現彈框,瀏覽器控制檯輸出XMLHttpRequest cannot load javascript:;. Cross origin requests are only supported for protocol schemes: http, dat

如何解決XMLHttpRequest cannot load file~~~~~~~Origin 'null' is therefore not allowed access

 錯誤          最近在做框架的時候,需要載入.html檔案和.json檔案的時候出現了以下一個錯誤:     分析                 一出現這個錯誤,我就猜到是載入.js

Chorm瀏覽器解決XMLHttpRequest cannot load file-----Origin 'null' is therefore not allowed access

文章轉載自:http://blog.csdn.net/dandanzmc/article/details/31344267/    博主:dandanzmc 因遇到相同問題,做個記錄。文章轉載自上述地址,請自行前往檢視。 錯誤          最近在做框架的時候,需

JSON解決方案收集

get ogl obb 本地 allow con mesa 跨域請求 loader 最近面試問的挺多的一個問題,就是JavaScript的跨域問題。在這裏,對跨域的一些方法做個總結。由於瀏覽器的同源策略,不同域名、不同端口、不同協議都會構成跨域;但在實際的業務中,很多

前端如何去做解決方案

時也 for 前後端 define 影響 list nts 告訴 iframe 前言 那些你,你常用的跨域解決方案除了jsonp 之外,還有其他的嗎?今日早讀文章可以告訴你,本文由 金蝶 @scq000授權分享。 正文從這開始~ 瀏覽器在請求不同域的資源時,會因為同源策略的

前端常見解決方案(全)

-type crm api war str bsp 斷開 jquery 數據塊 什麽是跨域? 跨域是指一個域下的文檔或腳本試圖去請求另一個域下的資源,這裏跨域是廣義的。 廣義的跨域: 1.) 資源跳轉: A鏈接、重定向、表單提交 2.) 資源嵌入: <link

前端常見解決方案

自定義 兩個 ech cors onload 消息 strong put 普通 什麽是跨域? 跨域是指一個域下的文檔或腳本試圖去請求另一個域下的資源,這裏跨域是廣義的。 廣義的跨域: 1.) 資源跳轉: A鏈接、重定向、表單提交 2.) 資源嵌入:<lin

withCredentials--相同主解決方法

rip bsp keyword 不同 plain script mode nbsp 主域 主域相同,而子域不同,存在跨域問題。在高版本瀏覽器下,可以設置withCredentials來解決。   xhrFields: {withCredentials: true}   低版

錯誤:XMLHttpRequest cannot load

ces req pre 本地 原因 target cto chrome瀏覽器 from 原因:Chrome瀏覽器不支持本地ajax訪問,具體就是ajax不能訪問file 有3種解決辦法:http://frabbit2013.blog.51cto.com/1067958/1

關於Vue-cli的解決

tar bsp es2017 dex 前綴 成功 config 端口 log 由於Vue-cli服務器是跑在node環境下的8080端口,我們的php代碼可能在Apache環境下的7070端口,這個時候就會出現跨域 此刻這段php代碼在7070端口上 如果直接去訪問

spring mvc的解決方案

增加 是否 strac inf oss ref nds sso option 什麽是跨域 一句話:同一個ip、同一個網絡協議、同一個端口,三者都滿足就是同一個域,否則就是跨域。 為什麽非得跨域 基於兩個方面: a. web應用本身是部署在不同的服務器上 b.基於開發的角度

vue解決方法 及設置api路徑方法

fun tab cti query 跨域請求 geo var nco target vue項目中,前端與後臺進行數據請求或者提交的時候,如果後臺沒有設置跨域,前端本地調試代碼的時候就會報“No ‘Access-Control-Allow-Origin‘ header is